postgresql 怎么关闭自动提交
答案:2 悬赏:0
解决时间 2021-01-03 12:20
- 提问者网友:斯文败类
- 2021-01-02 21:51
postgresql 怎么关闭自动提交
最佳答案
- 二级知识专家网友:零负荷的放任
- 2021-01-02 23:24
函数和触发器过程总是在一个由外层查询建立起来的事务里执行
--- 它们无法开始或者提交事务,因为 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 行记录)
--- 它们无法开始或者提交事务,因为 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 行记录)
全部回答
- 1楼网友:心与口不同
- 2021-01-03 00:01
插入大量数据最好用copy命令,比insert快的太多了。
copy只是一个sql命令,不需要设置的,postgresql的文档里面有这个命令的详细用法。
有什么问题就hi我吧。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯