码迷,mamicode.com
首页 > 数据库 > 详细

mysql:set autocommit=0与start transaction

时间:2020-05-30 15:26:04      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:rollback   orm   nbsp   mat   运行   code   ati   int   nsa   

set autocommit=0指事务非自动提交,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。

 

1、不管autocommit 是1还是0 
     START TRANSACTION 后,只有当commit数据才会生效,ROLLBACK后就会回滚。

 

2、当autocommit 为 0 时
    不管有没有START TRANSACTION。
    只有当commit数据才会生效,ROLLBACK后就会回滚。

 

3、如果autocommit 为1 ,并且没有START TRANSACTION 。
    调用ROLLBACK是没有用的。即便设置了SAVEPOINT。

 

对于 InnoDB 来说,select也是开事务的:

Remember that even a SELECT statement opens a transaction 

用一个闲置的 mysql 服务器做以下测试:

-- step1: 
SET autocommit = 0; -- 关闭自动提交;
-- step2: 
SELECT * FROM table_name; -- 执行查询语句 ;
-- step3: 
SELECT * FROM information_schema.INNODB_TRX;  --  查看正在运行的事务,此时你应该会看到一条记录,这条记录的 TRX_STARTED 就是 step2 的执行时间;
-- step4: COMMIT; -- step3 产生的那条记录消失。

 

 

参考链接:

https://www.cnblogs.com/lhp2012/p/5315928.html

https://segmentfault.com/q/1010000021044948/

 

mysql:set autocommit=0与start transaction

标签:rollback   orm   nbsp   mat   运行   code   ati   int   nsa   

原文地址:https://www.cnblogs.com/neozheng/p/12992569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!