在 MySQL 中,提交(COMMIT)和回滚(ROLLBACK)操作用于管理事务,确保数据的一致性和完整性。这些操作只有在使用支持事务的存储引擎(如 InnoDB)时才有效。
开启事务
在执行提交或回滚之前,需要先显式地开始一个事务:
START TRANSACTION;也可以使用 BEGIN 或 BEGIN WORK,效果相同。
提交操作(COMMIT)
当你完成一组操作并希望永久保存更改时,使用 COMMIT:
COMMIT;这会将事务中所有已执行的 INSERT、UPDATE、DELETE 操作写入数据库,无法再撤销。
例如:
START TRANSACTION;UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;
以上操作实现了资金转账,COMMIT 确保两个更新要么都成功,要么都不生效(如果中途出错且回滚)。
回滚操作(ROLLBACK)
如果在事务过程中发生错误或想放弃更改,可以使用 ROLLBACK:
ROLLBACK;它会撤销从 START TRANSACTION 以来的所有操作,恢复到事务开始前的状态。
例如:
START TRANSACTION;DELETE FROM orders WHERE status = 'failed';
-- 发现误操作
ROLLBACK; -- 删除操作被取消
自动提交模式
MySQL 默认开启自动提交(autocommit = 1),即每条 SQL 语句都会自动提交。
若要手动控制事务,需关闭自动提交:
SET autocommit = 0;之后的语句将属于同一个事务,直到手动执行 COMMIT 或 ROLLBACK。完成后建议重新开启:
SET autocommit = 1;基本上就这些。只要记得使用 InnoDB 引擎、显式开始事务,并合理使用 COMMIT 和 ROLLBACK,就能有效控制数据修改过程。
