AUTOCOMMIT
当 AUTOCOMMIT 设置为“on”时,每个 SQL 命令会在成功完成后自动提交;例如:
\set AUTOCOMMIT on
若要在此模式下推迟 COMMIT,请将值设置为 off。
\set AUTOCOMMIT off
如果 AUTOCOMMIT 为空或定义为 off,则 SQL 命令不会提交,除非您显式发出 COMMIT。
注意
-
默认情况下,AUTOCOMMIT 设置为 off。
-
AUTOCOMMIT 必须为大写,但其值(on 或 off)不区分大小写。
-
在关闭自动提交模式下,您必须通过输入 ABORT 或 ROLLBACK 来显式放弃任何失败的事务。
-
如果在未提交的情况下退出会话,将回退您所做的工作。
-
对 vsql 变量的验证在运行这些变量时进行,而不在设置这些变量时进行。
-
默认情况下,COPY 语句会在完成后提交,因此使用哪种 AUTOCOMMIT 模式并没什么影响,除非您发出 COPY NO COMMIT。请注意,DDL 语句会自动提交。
-
若要确定 AUTOCOMMIT 设置为 on 还是 off,请发出以下 set 命令:
$ \set... AUTOCOMMIT = 'off' ...
-
如果
SELECT * FROM LOCKS
显示了来自刚才运行的语句的锁,则表示 AUTOCOMMIT 设置为 off。$ \set AUTOCOMMIT off $ \set ... AUTOCOMMIT = 'off' ... SELECT COUNT(*) FROM customer_dimension; count ------- 50000 (1 row) SELECT node_names, object_name, lock_mode, lock_scope FROM LOCKS; node_names | object_name | lock_mode | lock_scope ------------+--------------------------+-----------+------------- site01 | Table:customer_dimension | S | TRANSACTION (1 row)