我正在使用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 语句