pb之autocommit

简介:         autocommit顾名思义自动提交的意思,默认情况下autocommit是false,需要手动commit或者rollback来结束当前事务。

        autocommit顾名思义自动提交的意思,默认情况下autocommit是false,需要手动commit或者rollback来结束当前事务。如果将autocommit设置为true,每执行完一条sql语句(update,insert)pb都会自动commit或者rollback事务。对信息系统来说,业务逻辑往往比较复杂,一般都是很多sql语句组成一个事务,所以说自动commit会出现数据的逻辑错误(部分commit,部分rollback),所以对于信息系统来说事务操作的时候,一定要将autocommit设置成false,人为去commit或者rollback数据。

        需要注意的是,事务对象的autocommit属性对oracle数据库是不起作用的,对oracle数据库来说,connect命令开启一个事务,disconnect命令结束事务,每次commit或者rollback的时候,都会结束当前事务,开启一个新的事务。所以如果pb信息系统连接的是oracle数据库,即便autocommit设置为true,也要手动执行commit或者rollback,否则会出现数据库阻塞的情况。

目录
相关文章
|
6月前
|
SQL 流计算
Flink CDC这俩statement mode和batch mode啥区别
Flink CDC这俩statement mode和batch mode啥区别
67 1
|
11月前
|
关系型数据库 MySQL
|
SQL 存储 Oracle
PB与各种数据库连接(二)
PB与各种数据库连接
216 0
|
SQL 存储 Oracle
PB与各种数据库连接(一)
PB与各种数据库连接
602 0
|
SQL 存储 移动开发
PB与各种数据库连接(三)
PB与各种数据库连接
751 0
|
存储 关系型数据库 MySQL
MySQL InnoDB的插入缓冲Insert Buffer
MySQL InnoDB的插入缓冲Insert Buffer
134 0
MySQL InnoDB的插入缓冲Insert Buffer
|
关系型数据库 MySQL
MySQL:关于RR模式下insert..select sending data状态说明
MySQL:关于RR模式下insert..select sending data状态说明
106 0
|
MySQL 关系型数据库
MySQL:begin后事务为什么不提交
今天顺便看了一下,主要流程就是跟踪为什么begin后事物不会提交,最后发现在:MYSQL_BIN_LOG::commit 函数中包含这个判断 if (!cache_mngr->trx_cache.is_binlog_empty() && ending_trans(thd, all) && !trx_stuff_logged) 如果begin的话ending_trans(thd, all) 将会返回为false,也就不会调用 order_commit流程了。
4224 0
|
SQL 关系型数据库 MySQL
mysql的handler_read_next理解
mysql,handler_read_next
4595 0
|
SQL 关系型数据库 MySQL
MySQL:Innodb 关于Handler_commit每次DML增加2的原因
简单描述一下,也是本人的问的,水平有限,如果有误请谅解。 原问题如下@mysqDBA: 请教一个问题。我每次insert一条语句,查询show global status like 'Handler_commit'; 发现每次增加值是2,难道不应该是1吗? 最简单的insert into tab.
2095 0