博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20181218 - PostgreSQL Auto Commit Guide(自动提交)
阅读量:6294 次
发布时间:2019-06-22

本文共 2420 字,大约阅读时间需要 8 分钟。

20181218 - PostgreSQL Auto Commit Guide

参考官网简介,https://www.postgresql.org/docs/10/ecpg-sql-set-autocommit.html

一、功能简介

Oracle中sqlplus里面执行DML语句;是需要提交commit;若错了;也可以回滚rollback; PostgreSQL psql里面默认是自动提交;执行完就马上提交,不能回滚,可以关闭自动提交。

AutoCommit基于客户端(psql、pgadmin等等)SESSION连接参数AUTOCOMMIT,数据库SERVER端不进行控制;

二、操作验证

条件一、默认开启自动提交autocommit功能

postgres=# \echo :AUTOCOMMIT  onpostgres=# create   table test_auto_commit(id int);CREATE TABLEpostgres=# insert into test_auto_commit values (1111);INSERT 0 1postgres=# update  test_auto_commit SET id = 1000 where id = 1111;UPDATE 1postgres=# select * from test_auto_commit ;  id  ------ 1000(1 row)postgres=# delete from test_auto_commit where  id = 1000;DELETE 1postgres=# select * from test_auto_commit ; id ----(0 rows)

结论:psql默认开启AUTOCOMMIT参数为on,INSERT、UPDATE、DELETE均无需显式输入commit命令,由客户端SESSION自动添加;

条件二、关闭默认开启自动提交auto_commit功能

postgres=# \set AUTOCOMMIT offpostgres=# \echo :AUTOCOMMIT offpostgres=# create   table test_auto_commit(id int);CREATE TABLE# INSERT 验证postgres=# select * from test_auto_commit ; id ----(0 rows)postgres=# insert into test_auto_commit values (1111);INSERT 0 1postgres=# select * from test_auto_commit ;  id  ------ 1111(1 row)postgres=# rollback ;ROLLBACKpostgres=# select * from test_auto_commit ; id ----(0 rows)# UPDATEpostgres=# update  test_auto_commit SET id = 1000 where id = 1111;UPDATE 1postgres=# select * from test_auto_commit ;  id  ------ 1000(1 row)postgres=# rollback;ROLLBACKpostgres=# select * from test_auto_commit ;  id  ------ 1111(1 row)#DELETEpostgres=# select * from test_auto_commit ;  id  ------ 1111(1 row)postgres=# delete from test_auto_commit where  id = 1111;DELETE 1postgres=# select * from test_auto_commit ; id ----(0 rows)postgres=# rollback;ROLLBACKpostgres=# select * from test_auto_commit ;  id  ------ 1111(1 row)postgres=# delete from test_auto_commit where  id = 1111;DELETE 1postgres=# commit;COMMITpostgres=# select * from test_auto_commit ; id ----(0 rows)

结论:修改psql默认开启AUTOCOMMIT参数为off,INSERT、UPDATE、DELETE均需显式输入commit命令,由客户端SESSION不会自动添加;

三、修改方法

1.检查当前AUTOCOMMIT参数值

postgres=# \echo :AUTOCOMMIT on

2.修改当前AUTOCOMMIT参数值为OFF

postgres=# \set AUTOCOMMIT off

3.检查修改的AUTOCOMMIT参数值是否为OFF

postgres=# \echo :AUTOCOMMIT off

4.仅限于psql工具

客户端所在系统用户执行以下语句,家目录下生成.psqlrc

$ echo "\set AUTOCOMMIT off" >>$HOME/.psqlrc

四、注意事项

设置后同时影响本 session,及以后的语句;客户端内临时修改AUTOCOMMIT参数,退出客户端失效

转载于:https://www.cnblogs.com/piggybaba/p/pg_autocommit.html

你可能感兴趣的文章
sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-hxsyl-journalnode.pid: Permission denied
查看>>
@RequestMapping 用法详解之地址映射
查看>>
254页PPT!这是一份写给NLP研究者的编程指南
查看>>
《Data Warehouse in Action》
查看>>
String 源码浅析(一)
查看>>
Spring Boot 最佳实践(三)模板引擎FreeMarker集成
查看>>
Fescar 发布 0.2.3 版本,支持 Redis 和 Apollo
查看>>
Google MapReduce到底解决什么问题?
查看>>
CCNP-6 OSPF试验2(BSCI)
查看>>
Excel 2013 全新的图表体验
查看>>
openstack 制作大于2TB根分区自动扩容的CENTOS镜像
查看>>
Unbuntu安装遭遇 vmware上的Easy install模式
查看>>
几个常用的ASP木马
查看>>
python分析postfix邮件日志的状态
查看>>
Mysql-5.6.x多实例配置
查看>>
psutil
查看>>
在git@osc上托管自己的代码
查看>>
机器学习算法:朴素贝叶斯
查看>>
小五思科技术学习笔记之扩展访问列表
查看>>
使用Python脚本检验文件系统数据完整性
查看>>