postgresql 关闭自动提交
我们知道oracle中sqlplus里面执行dml语句;是需要提交commit;若错了;也可以回滚rollback; 然而在postgresql里面默认是自动提交;执行完就马上提交了,不能回滚,这样容易导致误操作的发生,有没有什么办法避免这个风险呢?当然有,在psql中默认是打开自动提交的,我们可以关闭自动提交。
2. 操作验证
[postgres@oracle2 ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help.xzfb=> create table lottu01(id int);CREATE TABLExzfb=> select * from lottu01;id----(0 rows)xzfb=> insert into lottu01 values (1001);INSERT 0 1xzfb=> rollbackxzfb-> ;WARNING: there is no transaction in progressROLLBACKxzfb=> select * from lottu01;id------1001(1 row)
[postgres@oracle2 ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help.xzfb=> \set AUTOCOMMIT offxzfb=> insert into lottu01 values (1002);INSERT 0 1xzfb=> commit; --1002此处提交COMMITxzfb=> insert into lottu01 values (1003);INSERT 0 1xzfb=> rollback; --1003回滚了ROLLBACKxzfb=> select * from lottu01;id------10011002(2 rows)
3. 自动关闭提交
如果每次进入psql后都手工设置\set AUTOCOMMIT off比较麻烦,可以把这句设置到.psqlrc文件:
[postgres@oracle2 ~]$ cat .psqlrc\set AUTOCOMMIT off[postgres@oracle2 ~]$
4. 备注
[postgres@oracle2 ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help.xzfb=> insert into lottu01 values ('1523');INSERT 0 1xzfb=> insert into lottu01 values ('a1523'); --插入字符串。ERROR: invalid input syntax for integer: "a1523"LINE 1: insert into lottu01 values ('a1523');^xzfb=> insert into lottu01 values (1523); --执行正确的dml语句会报错ERROR: current transaction is aborted, commands ignored until end of transaction blockxzfb=> rollback; --避免下面继续报错ROLLBACKxzfb=> insert into lottu01 values (1523);INSERT 0 1
2. 执行ddl语句;也是需要执行commit,当然也可以rollback
xzfb=> create table t(id int);CREATE TABLExzfb=> select * from t;id----(0 rows)xzfb=> \q[postgres@oracle2 ~]$ psql -U lottu -d xzfbpsql (9.5.0)Type "help" for help.xzfb=> select * from t;ERROR: relation "t" does not existLINE 1: select * from t;^
3. 上面除了设置关闭自动提交;我们也可以通过begin end;去执行。略
作者 : li0924
时间 : 2016-01-22
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
postgresql 关闭自动提交的更多相关文章
- KingbaseES V8R6 ksql 关闭自动提交
背景 用过oracle或mysql的人都知道,做一个dml语句,如果发现做错了,还可以rollback,但在Kingbase ksql 中,如果执行一个dml,没有先运行begin; 的话,一执行完就 ...
- sql小技巧——关闭自动提交,防止误操作
set IMPLICIT_TRANSACTIONS ON--关闭自动提交on 防止误操作,除非显式提交commit后,才会真正提交到数据库中,并且可以随时回滚操作.如下: set IMPLICIT_T ...
- 20181218 - PostgreSQL Auto Commit Guide(自动提交)
20181218 - PostgreSQL Auto Commit Guide 参考官网简介,https://www.postgresql.org/docs/10/ecpg-sql-set-autoc ...
- MysqL自动提交机制的关闭
MysqL在执行一句数据库操作命令的时候,通常都是自动提交的.常用引擎下有两种,分别是MyIsam和InnoDB,MyIsam是不支持事务处理的,但InnoDB支持,但InnoDB在不开启事务处理的情 ...
- JDBC 关闭数据库连接与自动提交【转】
// Jdbc关闭数据库连接时,会隐含一个提交事务的操作 private final static String DB_DRIVER = "oracle.jdbc.driver.Oracle ...
- 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...
- Mysql 关闭自动commit
更多内容推荐微信公众号,欢迎关注: 1. 会话级关闭自动提交 mysql> set autocommit=off; Query OK, 0 rows affected (0.00 sec) my ...
- 【PostgreSQL-9.6.3】如何实现非自动提交
我们在使用psql工具操作数据库时,事务是自动提交的.也就是说,当我们执行完一条insert或者delete语句后,在不输入commit情况下,这条语句也是提交的.如果不想自动提交,可以使用以下两种方 ...
- pymssql默认关闭自动模式开启事务行为浅析
使用Python采集SQL Server数据库服务器磁盘信息时,遇到了一个错误"CONFIG statement cannot be used inside a user transacti ...
随机推荐
- RAID讲解
RAID定义 RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘, ...
- [ROS]2 尝试编译OrbSLAM
主要参考http://blog.csdn.net/dourenyin/article/details/48055441 1.编译g2o的过程中, 先是出现Eigen3依赖项的问题,要求Eigen3最低 ...
- web文件上传的实现
1,html页面,上传使用input type=file控件,其所在的form必须加上enctype="multipart/form-data" <form role=&qu ...
- 转:CDC,CPaintDC,CClientDC,CWindowDC区别
http://www.cnblogs.com/songsu/articles/1350014.html
- SmartGit as SVN Bridge
This page provides an introduction to SmartGit from an SVN users perspective and shows how the SVN w ...
- uiwebview加载中文URL
uiwebview加载中文URL _paperGamePath = [_paperGamePath stringByAddingPercentEscapesUsingEncoding:NSUTF8St ...
- 【Origin】晨起忆梦
昨夜有梦又还乡, 忆起少年儿郎样: 田畔有花不忍折, 岁岁年年观花放. -作于二零一五年八月四日
- csuoj 1115: 最短的名字
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1115 1115: 最短的名字 Time Limit: 5 Sec Memory Limit: 6 ...
- [原创]java WEB学习笔记70:Struts2 学习之路-- 输入验证,声明式验证,声明是验证原理
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 10---Net基础加强
复习: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...