【问题标题】:With MySQL, how do BEGIN; ROLLBACK; and COMMIT; relate to autocommit?使用 MySQL,如何 BEGIN;回滚;和承诺;与自动提交有关?
【发布时间】:2012-03-10 03:40:47
【问题描述】:

您似乎可以通过仅使用 BEGIN 的事务来实现您所需要的一切;回滚并提交;。是否有某些需要使用自动提交的场景?是否调用 BEGIN;将自动提交设置为假?是否调用 COMMIT;将自动提交设置为 true?

【问题讨论】:

    标签: mysql transactions


    【解决方案1】:

    可以按会话或全局设置自动提交。没有需要自动提交的方案(并非所有 RDMS 都支持自动提交模式)。在我看来,自动提交默认为 true 的原因是因为 MyISAM 引擎根本不支持事务,所以为了减轻为 MyISAM 编写的移植应用程序,它们模仿了相同的行为。

    是否调用 BEGIN;将自动提交设置为假?是否调用 COMMIT;将自动提交设置为 true?

    来自mysql documentation

    要禁用单个系列语句的自动提交模式,请使用 START TRANSACTION 语句:...
    使用 START TRANSACTION,自动提交保持禁用状态,直到您使用 COMMIT 或 ROLLBACK 结束事务。然后自动提交模式恢复到之前的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 2013-11-22
      • 2012-03-04
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多