Mysql 中的事务和自动提交

urb*_*ter 0 mysql innodb transactions

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

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

SET AUTOCOMMIT = 0;
START TRANSACTION;
[SQL STATEMENTS]
COMMIT;
SET AUTOCOMMIT = 1;
Run Code Online (Sandbox Code Playgroud)

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

Non*_*nos 5

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