如何在PostgreSQL中实现非自动提交

 我来答
戎卓逸0iG
2017-07-08 · 超过32用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:42万
展开全部
函数和触发器过程总是在一个由外层查询建立起来的事务里执行
--- 它们无法开始或者提交事务,因为 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 行记录)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式