MySQL 事务中发生错误,事务真的会回滚吗

image.png

如图,开启事务,第二条SQL发生错误,COMMIT之后发现第一条SQL并没有"回滚"。

MySQL 5.7
存储引擎InnoDB

在MySQL文档中发现这么一句话

InnoDB sometimes rolls back only the statement that failed, other times it rolls back the entire transaction.
https://dev.mysql.com/doc/ref...

如何理解上述现象?

阅读 3.4k
2 个回答

因为你手动commit了事务,会把成功的sql执行

你这里开启了一个事物,并不是发生异常的时候就回滚的,

而你下面直接commit提交了事物,那么成功执行语句就会成功了;

如果你不执行提交事物的话,在当前连接关闭后,事物才会自动回滚。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题