在mysql中,COMMIT和ROLLBACK用于管理事务以确保数据一致性,仅在InnoDB等支持事务的存储引擎中有效;2. 使用START TRANSACTION(或BEGIN)显式开启事务,执行一组操作后通过COMMIT永久保存更改,如转账示例中的两个UPDATE操作;3. 若发生错误或需取消操作,可执行ROLLBACK撤销事务内所有变更,恢复至事务开始前状态;4. MySQL默认开启autocommit模式,每条语句自动提交,手动控制事务需先设置SET autocommit = 0,事务结束后建议恢复autocommit = 1。

在 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,就能有效控制数据修改过程。


