mysql默认开启自动提交(autocommit=1),每条DML语句自动提交且不可回滚;2. 可通过select @@autocommit查看状态,SET autocommit=1或ON开启;3. 自动提交下每条语句独立事务,不支持回滚,适用于简单操作;4. 多语句需原子性时应关闭autocommit,使用START TRANSACTION、COMMIT、ROLLBACK保证一致性;5. 操作完成后建议恢复autocommit=1。

MySQL 中的自动提交模式(autocommit)控制着事务是否在每条语句执行后自动提交。默认情况下,MySQL 是开启自动提交的,这意味着每条 INSERT、UPDATE、delete 等修改数据的语句都会立即生效并无法回滚。
查看当前自动提交状态
可以通过以下命令查看当前 autocommit 的设置:
SELECT @@autocommit;
返回值为 1 表示开启,0 表示关闭。
启用自动提交模式
如果你之前关闭了自动提交,可以通过以下命令重新开启:
SET autocommit = 1;
或者使用:
SET autocommit = ON;
开启后,每条 SQL 语句都会在执行完成后立即提交,不需要手动调用 COMMIT。
自动提交模式下的行为特点
当 autocommit = 1 时:
- 每条单独的 DML 语句(如 INSERT、UPDATE、DELETE)会自动作为一个事务提交。
- 不能通过 ROLLBACK 回滚最近的操作。
- 适合简单的操作场景,比如日常的数据查询和单条记录插入。
- 对于需要保证多条语句原子性的业务逻辑,应临时关闭 autocommit。
何时应该关闭自动提交
在执行多个相关操作且要求全部成功或全部失败时,应关闭自动提交:
SET autocommit = 0; START TRANSACTION; -- 执行多条 SQL 语句 INSERT INTO accounts VALUES (...); UPDATE balance SET amount = ...; -- 全部成功再提交 COMMIT; -- 出错可回滚 ROLLBACK;
完成操作后建议恢复自动提交:
SET autocommit = 1;
基本上就这些。正常使用 MySQL 时无需特别设置,保持默认自动提交即可。只有在处理涉及多个步骤的事务时,才需要临时关闭它以确保数据一致性。


