20181218 - PostgreSQL Auto Commit Guide(自动提交)
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(自动提交)的更多相关文章
- postgresql 关闭自动提交
1. 简介说明 我们知道oracle中sqlplus里面执行dml语句:是需要提交commit:若错了:也可以回滚rollback: 然而在postgresql里面默认是自动提 ...
- 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...
- 自动提交Git branch代码评审到Review Board系统
背景 敏捷软件开发中,越小的反馈环,意味着软件质量越容易得到保证. 作为组件团队,我们的开发任务中,往往存在一些特性涉及到几十个功能点,开发周期持续数周或数月的情况.如何在开发过程中保证软件质量,是个 ...
- 关于SpringKafka消费者的几个监听器:[一次处理单条消息和一次处理一批消息]以及[自动提交offset和手动提交offset]
自己在使用Spring Kafka 的消费者消费消息的时候的实践总结: 接口 KafkaDataListener 是spring-kafka提供的一个供消费者接受消息的顶层接口,也是一个空接口; pu ...
- Solr auto commit 配置
为了解决写索引时频繁提交带来的效率问题,考虑使用自动提交. 在solrconfig.xml中增加以下代码: <updateHandler class="solr.DirectUpdat ...
- git(osx)上的一个git commit无法正确提交的问题
我发现在我修改我自己的文件之后企图使用git commit编辑更加详细的争对这次提交的信息的时候 我mac上的vi编辑器貌似 出现了问题 大概报这个错. error: There was a prob ...
- JDBC自动提交和批处理操作
今天用JDBC与数据库进行交互的时候,报错如下: *************************************************************************** ...
- MySQL的自动提交模式
默认情况下, MySQL启用自动提交模式(变量autocommit为ON).这意味着, 只要你执行DML操作的语句,MySQL会立即隐式提交事务(Implicit Commit).这个跟SQL S ...
- JDBC 关闭数据库连接与自动提交【转】
// Jdbc关闭数据库连接时,会隐含一个提交事务的操作 private final static String DB_DRIVER = "oracle.jdbc.driver.Oracle ...
随机推荐
- mysql_study_2
select 代码: CREATE DATABASE mysql_shiyan; use mysql_shiyan; CREATE TABLE department ( dpt_name ) NOT ...
- TensorFlow tf.gradients的用法详细解析以及具体例子
tf.gradients 官方定义: tf.gradients( ys, xs, grad_ys=None, name='gradients', stop_gradients=None, ) Cons ...
- JavaScript03-基本概念一
js包括:语法.语句.类型.关键字.保留字.操作符和对象. 语法.关键字.保留字 1.js中一切区分大小写,包括变量.函数名.操作符: 2.标识符规则,第一个字符必须是字母.下划线_.或者美元符号,其 ...
- 【SQL进阶】03.执行计划之旅1 - 初探
听到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. S ...
- 【Spark篇】---Spark中Action算子
一.前述 Action类算子也是一类算子(函数)叫做行动算子,如foreach,collect,count等.Transformations类算子是延迟执行,Action类算子是触发执行.一个appl ...
- SpringCloud(6)---熔断降级理解、Hystrix实战
SpringCloud(6)---熔断降级理解.Hystrix实战 一.概念 1.为什么需要熔断降级 (1)需求背景 它是系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案. 在一个分布 ...
- Chapter 5 Blood Type——24
"She's just a little faint," he reassured the startled nurse. "They're blood typing i ...
- 【ASP.NET Core快速入门】(十一)应用Jwtbearer Authentication、生成jwt token
准备工作 用VSCode新建webapi项目JwtAuthSample,并打开所在文件夹项目 dotnet new webapi --name JwtAuthSample 编辑JwtAuthSampl ...
- kubernetes进阶之一:简单例子
kubernetes 从一个简单例子开始 参考 <kubernetes 权威指南>一节的 从一个简单例子开始,操作实录. 一.Java Web 应用结构 二.启动MySql服务 1.首先为 ...
- Docker最全教程——从理论到实战(二)
上篇内容链接: https://www.cnblogs.com/codelove/p/10030439.html Docker和ASP.NET Core Docker 正在逐渐成为容器行业的事实标准, ...