如何在mysql中使用提交和回滚操作

来源:这里教程网 时间:2026-02-28 20:17:53 作者:

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

相关推荐