【问题标题】:Transactions and AUTOCOMMIT in MysqlMysql 中的事务和自动提交
【发布时间】:2013-03-16 16:53:01
【问题描述】:

据我所知,对于 MySQL 中的 InnoDB 表,所有事务都用 START TRANSACTION 包装;并以 COMMIT 结束;除非明确声明不这样做。

如果我要明确定义事务块,这样做是否正确:

SET AUTOCOMMIT = 0;
START TRANSACTION;
[SQL STATEMENTS]
COMMIT;
SET AUTOCOMMIT = 1;

这之后的下一个事务会回到 InnoDb 默认处理事务的方式吗?我的意图是有时在我的应用程序中明确定义事务,但所有其他事务将由引擎处理。

【问题讨论】:

    标签: mysql transactions innodb


    【解决方案1】:

    在您的情况下,您不需要将自动提交设置为 0。隐式定义事务会为您做到这一点。来自MySQL documentation: "要为单个语句系列隐式禁用自动提交模式,请使用 START TRANSACTION 语句:"

    【讨论】:

    • 谢谢你的回答,诺哈。
    猜你喜欢
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2013-11-22
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多