标签: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