据我所知,对于MySQL中的InnoDB表,所有事务都包含在START TRANSACTION中;并以COMMIT结束;除非明确说明不是。
如果我要明确定义事务块,那么做这样的事情是否正确:
SET AUTOCOMMIT = 0;
START TRANSACTION;
[SQL STATEMENTS]
COMMIT;
SET AUTOCOMMIT = 1;
此后的下一个交易会回到InnoDb默认处理交易的方式吗?我的意图是有时只在我的应用程序中明确定义了事务,但所有其他事务都将由引擎处理。
答案 0 :(得分:4)
在您的情况下,您无需将自动提交设置为0。隐式定义事务会为您做到这一点。来自MySQL documentation: “要为一系列语句隐式禁用自动提交模式,请使用START TRANSACTION语句:”