使用InnoDB引擎时,通过START TRANSACTION开启事务,执行SQL操作后根据结果COMMIT提交或ROLLBACK回滚,确保数据一致性,如转账场景中两步更新要么全成功要么全失败。

在 MySQL 中使用事务,主要是为了确保一组数据库操作要么全部成功,要么全部失败,从而保证数据的一致性。事务的使用依赖于支持事务的存储引擎,最常用的是 InnoDB。
开启事务
默认情况下,MySQL 是自动提交模式(autocommit = 1),即每条 SQL 语句执行后会立即提交。要使用事务,需要先关闭自动提交,手动控制事务边界。
START TRANSACTION; 或 BEGIN;执行 SQL 操作
在事务中执行你需要的增删改查操作。例如:
- INSERT INTO users(name, balance) VALUES ('Alice', 1000);
- UPDATE users SET balance = balance - 200 WHERE name = 'Alice';
- UPDATE accounts SET balance = balance + 200 WHERE name = 'Bob';
这些操作不会立即生效,除非你提交事务。
提交或回滚事务
根据业务逻辑判断是否完成所有操作:
- 提交事务(保存更改): COMMIT; —— 所有操作永久生效。
- 回滚事务(撤销更改): ROLLBACK; —— 撤销从 START TRANSACTION 以来的所有操作。
示例:转账操作
假设 Alice 给 Bob 转账 200 元,需保证两步更新都成功,否则都不执行:
START TRANSACTION;UPDATE users SET balance = balance - 200 WHERE name = 'Alice';
UPDATE users SET balance = balance + 200 WHERE name = 'Bob';
-- 检查是否出错
-- 如果没问题
COMMIT;
-- 如果出错
-- ROLLBACK;
如果中间发生错误(如余额不足、连接中断等),执行 ROLLBACK 可恢复原始状态。
基本上就这些。只要用 InnoDB 引擎,合理使用 START TRANSACTION、COMMIT 和 ROLLBACK,就能有效管理事务。注意避免长时间不提交事务,以免锁资源影响性能。










