MySQL 事务实现



我正在使用InnoDB 5.6.35,我有一个关于实现MySQL事务的正确方法的问题。 如果我实现以下内容,请在一个语句中将其发送到MySQL:

开始交易;

SQL 语句 1;SQL 语句 2;...犯;

问:如果其中一个 SQL 语句失败,MySQL 会自动发出回滚吗?我看到的行为是,看起来MySQL在遇到失败的操作时不会提交上述语句(甚至在我的程序中也没有调用Rollback),但是在阅读了一些帖子后,我不太确定。 我是否必须按照其他人的建议将代码包装在存储过程中,并在代码中显式调用"回滚"?

有人可以帮我澄清这一点吗?

https://dev.mysql.com/doc/refman/5.5/en/innodb-error-handling.html只是在某些情况下,它只会回滚失败的语句。

  • 如果表空间中的文件空间不足,则 MySQL 表已满 发生错误,InnoDB 回滚 SQL 语句。
  • 事务死锁会导致 InnoDB 回滚整个事务。
  • 重复键错误回滚 SQL 语句
  • 行太长错误将回滚 SQL 语句。
  • 其他错误主要由MySQL代码层(高于InnoDB存储引擎级别)检测到,并且它们 回滚对应的 SQL 语句

最新更新