mysql:set autocommit=0与start transaction

时间:2020-05-30
本文章向大家介绍mysql:set autocommit=0与start transaction,主要包括mysql:set autocommit=0与start transaction使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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/

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