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
on
postgres=# create table test_auto_commit(id int);
CREATE TABLE
postgres=# insert into test_auto_commit values (1111);
INSERT 0 1
postgres=# update test_auto_commit SET id = 1000 where id = 1111;
UPDATE 1
postgres=# select * from test_auto_commit ;
id
------
1000
(1 row)
postgres=# delete from test_auto_commit where id = 1000;
DELETE 1
postgres=# select * from test_auto_commit ;
id
----
(0 rows)

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

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

postgres=# \set AUTOCOMMIT off
postgres=# \echo :AUTOCOMMIT
off postgres=# 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 1
postgres=# select * from test_auto_commit ;
id
------
1111
(1 row) postgres=# rollback ;
ROLLBACK
postgres=# select * from test_auto_commit ;
id
----
(0 rows) # UPDATE
postgres=# update test_auto_commit SET id = 1000 where id = 1111;
UPDATE 1
postgres=# select * from test_auto_commit ;
id
------
1000
(1 row) postgres=# rollback;
ROLLBACK
postgres=# select * from test_auto_commit ;
id
------
1111
(1 row) #DELETE
postgres=# select * from test_auto_commit ;
id
------
1111
(1 row) postgres=# delete from test_auto_commit where id = 1111;
DELETE 1
postgres=# select * from test_auto_commit ;
id
----
(0 rows) postgres=# rollback;
ROLLBACK
postgres=# select * from test_auto_commit ;
id
------
1111
(1 row) postgres=# delete from test_auto_commit where id = 1111;
DELETE 1
postgres=# commit;
COMMIT
postgres=# 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参数,退出客户端失效

20181218 - PostgreSQL Auto Commit Guide(自动提交)的更多相关文章

  1. postgresql 关闭自动提交

    1. 简介说明             我们知道oracle中sqlplus里面执行dml语句:是需要提交commit:若错了:也可以回滚rollback: 然而在postgresql里面默认是自动提 ...

  2. 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚

    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...

  3. 自动提交Git branch代码评审到Review Board系统

    背景 敏捷软件开发中,越小的反馈环,意味着软件质量越容易得到保证. 作为组件团队,我们的开发任务中,往往存在一些特性涉及到几十个功能点,开发周期持续数周或数月的情况.如何在开发过程中保证软件质量,是个 ...

  4. 关于SpringKafka消费者的几个监听器:[一次处理单条消息和一次处理一批消息]以及[自动提交offset和手动提交offset]

    自己在使用Spring Kafka 的消费者消费消息的时候的实践总结: 接口 KafkaDataListener 是spring-kafka提供的一个供消费者接受消息的顶层接口,也是一个空接口; pu ...

  5. Solr auto commit 配置

    为了解决写索引时频繁提交带来的效率问题,考虑使用自动提交. 在solrconfig.xml中增加以下代码: <updateHandler class="solr.DirectUpdat ...

  6. git(osx)上的一个git commit无法正确提交的问题

    我发现在我修改我自己的文件之后企图使用git commit编辑更加详细的争对这次提交的信息的时候 我mac上的vi编辑器貌似 出现了问题 大概报这个错. error: There was a prob ...

  7. JDBC自动提交和批处理操作

    今天用JDBC与数据库进行交互的时候,报错如下: *************************************************************************** ...

  8. MySQL的自动提交模式

      默认情况下, MySQL启用自动提交模式(变量autocommit为ON).这意味着, 只要你执行DML操作的语句,MySQL会立即隐式提交事务(Implicit Commit).这个跟SQL S ...

  9. JDBC 关闭数据库连接与自动提交【转】

    // Jdbc关闭数据库连接时,会隐含一个提交事务的操作 private final static String DB_DRIVER = "oracle.jdbc.driver.Oracle ...

随机推荐

  1. 【转】msfvenom使用指南

    msfvenom命令行选项如下: Options: -p, --payload <payload> 指定需要使用的payload(攻击荷载).如果需要使用自定义的payload,请使用'- ...

  2. .NET跨平台开发之Xamarin.Android介绍与生命周期【2】

    前言 不同于IOS,Xamarin在Visual Studio中针对Android,可以很直接的去设计使用者界面,在本系列中,子浩会针对Android目录结构以及基本控制项进行介绍,包括TextVie ...

  3. windows之桌面程序引导功能

    经常使用windows系统的同学可能都会遇到这样一种情况,刚按照完的应用程序,可能会在桌面产生一个提示信息,指示当前快捷方式可以使用了,并给出相应的文字说明,指示该快捷方式的功能.那么大家有没有考虑过 ...

  4. 『骑士精神 IDA*』

    骑士精神(SCOI2005) Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵 ...

  5. Lucene 06 - 使用Lucene的Query API查询数据

    目录 1 Query对象的创建(方式一): 使用子类对象 1.1 常用的Query子类对象 1.2 常用的Query子类对象使用 1.2.1 使用TermQuery 1.2.2 使用NumericRa ...

  6. Java IO模型

    Linux的内核将所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符).而对一个Socket的读写也会有相应的描述 ...

  7. ReentrantLock原理学习

    上文我们学习了ReentrantLock的基本用法,在最后我们留下了一个问题,ReentrantLock获取的锁是什么锁呢?本文我们就从源码的角度来一探究竟.本文涉及到的源码对应JDK版本为1.8. ...

  8. 认识浏览器请求头User-Agent

    一.定义 User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA. 它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本.操 ...

  9. 结识hybrid体验这一年

    在这之前虽然看过一些博客介绍 hybrid,但是始终没有具体应用场景,想象的就是我现在做好了一个网站,然后 native 直接在 webview 中打开我的网站,类似浏览器中打开网站一样,头部添加一个 ...

  10. Redis Codis 部署安装

    背景 关于Redis的高可用除了只身的Sentinel和Cluster之外,还有一个用的比较多的是Codis,由于公司的Redis大部分都使用Codis,本文就针对Codis进行相关的安装部署进行说明 ...