postgresql 怎么关闭自动提交

2025-05-10 11:03:04
推荐回答(1个)
回答1:

函数和触发器过程总是在一个由外层查询建立起来的事务里执行 
--- 它们无法开始或者提交事务,因为 PostgreSQL 没有嵌套事务.


Test=# select * from test_main;
 id |  value
----+----------
  1 | ONE1
  2 | TWO1
  4 | FOUR1
 11 | ONEONE
 12 | ONETWO
 13 | ONETHREE
(6 行记录)


通过 BEGIN;  来开始一个事务,  COMMIT; 结束一个.


Test=# BEGIN;
BEGIN
Test=# INSERT INTO test_main(id, value) VALUES (100, '100');
INSERT 0 1
Test=# INSERT INTO test_main(id, value) VALUES (100, '100');
错误:  重复键违反唯一约束"test_main_pkey"
描述:  键值"(id)=(100)" 已经存在
Test=# SELECT * FROM test_main;
错误:  当前事务被终止, 事务块结束之前的查询被忽略
Test=# ROLLBACK;
ROLLBACK
Test=# SELECT * FROM test_main;
 id |  value
----+----------
  1 | ONE1
  2 | TWO1
  4 | FOUR1
 11 | ONEONE
 12 | ONETWO
 13 | ONETHREE
(6 行记录)