COMMIT
COMMIT 提交事务——把当前事务中所有修改永久保存到数据库,并释放事务锁。
事务是数据库的原子操作单元:要么全部成功,要么全部失败。COMMIT 就是"全部成功"的确认按钮。在 COMMIT 之前,其他会话看不到你的修改,你可以随时 ROLLBACK 撤销。
MySQL 默认开启自动提交(autocommit = 1),每条 SQL 语句都是一个独立事务,执行完自动 COMMIT。要手动控制事务,需要先 SET autocommit = 0,或者用 START TRANSACTION 显式开启。
以飞翔科技为例。转账场景必须用事务:
-- 飞翔科技内部转账:从部门 1 转 1000 元给部门 2
START TRANSACTION;
-- 部门 1 扣款
UPDATE department_budget
SET balance = balance - 1000
WHERE dept_id = 1;
-- 部门 2 收款
UPDATE department_budget
SET balance = balance + 1000
WHERE dept_id = 2;
-- 确认无误,提交
COMMIT;
如果两条 UPDATE 之间程序崩溃,或者 COMMIT 前发现错误,整个事务会回滚,两个部门的余额都不会变。这就是事务的原子性:要么全改,要么全不改。COMMIT 之后,修改对其他会话可见,且无法再回滚。