显式启动事务通过BEGIN或START TRANSACTION手动开启,适用于需精确控制的多语句操作,如转账;2. 隐式启动在autocommit=1时每条语句自动提交,适合简单操作,可通过SET autocommit=0实现语句累积事务。
MySQL 中启动事务主要有两种方法,它们分别适用于不同的使用场景和需求。下面详细介绍这两种方式。
这是最常见也是最推荐的方式,由用户主动控制事务的开始。
示例:
START TRANSACTION; UPDATE account SET balance = balance - 100 WHERE user = 'A'; UPDATE account SET balance = balance + 100 WHERE user = 'B'; COMMIT;
当 autocommit = 1(默认开启)时,每条单独的 SQL 语句都会被当作一个事务自动提交。
DELETE 语句后,MySQL 会自动提交,不需要手动调用 COMMIT。示例:
SET autocommit = 0; UPDATE table1 SET col1 = 'value' WHERE id = 1; UPDATE table2 SET col2 = 'value' WHERE id = 2; COMMIT; -- 手动提交整个事务 SET autocommit = 1; -- 恢复自动提交
基本上就这些。根据是否需要手动控制,选择合适的事务启动方式即可。显式使用 BEGIN 更清晰可控,而 autocommit 模式适合简单操作。不复杂但容易忽略细节。