0

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

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

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

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

4

1 回答 1

4

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

于 2013-03-17T15:16:29.947 回答