mysql事务,如何理解commit提交操作的隐式和显式执行?
发布于 作者:苏南大叔 来源:程序如此灵动~

mysql
事务中在innodb
表中,使用rollback
命令来回滚数据,使用commit
命令来提交数据。只要是innodb
表,第一次rollback
就可以无视autocommmit
设置无条件生效。那么,commit
命令呢?和autocommit
设置之间是什么关系。这就是本文要讨论的问题。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码故事。本文测试环境:win10
,mysql@5.7.26
,mysql-front@5.3
。
前文回顾
如何设置autocommit
自动提交选项?
如何理解rollback
数据回滚?
从以前的文章里面,已经有了明显的结论:
- 事务需要
innodb
引擎的表。 begin
或者start transaction
是开始标志。commit
是结束当前一轮事务的标志。- 开启
autocommit
在特定情况下会触发隐藏的commit
操作。
龙套数据表
事务的开始和结束标志,都可以隐式调用的。commit
之后就是一轮新的事务,会影响rollback
数据回滚的范围。本文的例子还是对上一个rollback
的文章进行改编。
龙套数据表如下:
commit 显式执行
注意这里是关闭了autocommit
。
可以看到:commit
之后,数据就真删除了,无法rollback
了。

commit 隐式执行
注意这里开启了autocommit
。
可以看到:隐式的commit
之后,数据就真删除了。无法rollback
了。

结语
写这么多技术总结也没有用,要看产出的。兄弟。更多mysql
经验文章,请参考苏南大叔的博客:


