BEGIN / COMMIT / ROLLBACK要点
- START TRANSACTION 或 BEGIN 显式开启一个事务
- COMMIT 提交,让事务内所有改动正式生效
- ROLLBACK 回滚,撤销事务内全部未提交改动
- COMMIT 与 ROLLBACK 之后事务立即结束
- 报错时应走 ROLLBACK,否则改动会悬在半空
- 命令行默认自动提交,不显式 BEGIN 每条都立即生效
BEGIN / COMMIT / ROLLBACK示例
-- 转账:A 减 200,B 加 200,必须同时成功
START TRANSACTION;
UPDATE accounts SET balance = balance - 200 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 200 WHERE user_id = 2;
COMMIT;
-- 若中途发现异常,回滚到转账前
-- ROLLBACK;
避坑提醒:真实代码里要在捕获异常的分支调用 ROLLBACK,别只在成功时 COMMIT,否则出错就留下半成品数据。