【问题标题】:MySQL transaction implementation [duplicate]MySQL事务实现[重复]
【发布时间】:2018-04-10 19:02:30
【问题描述】:

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

开始交易;

SQL 语句 1; SQL 语句 2; ... 提交;

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

有人可以帮我澄清一下吗?

【问题讨论】:

    标签: mysql stored-procedures transactions


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2015-09-06
      • 1970-01-01
      • 2016-04-24
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多