贝利信息

如何回滚事务_mysql rollback用法

日期:2026-01-07 00:00 / 作者:P粉602998670
ROLLBACK用于撤销当前事务中未提交的INSERT、UPDATE、DELETE操作,使数据库回退至事务开始前状态;需先关闭autocommit或执行START TRANSACTION;支持回滚至SAVEPOINT;但对DDL、锁表及权限管理语句无效。

MySQL 中的 ROLLBACK 用于撤销当前事务中尚未提交(COMMIT)的所有数据修改操作,让数据库回到事务开始前的状态。

事务必须显式开启才能回滚

MySQL 默认是自动提交模式(autocommit=1),每条 SQL 语句都会立即生效、无法回滚。要使用 ROLLBACK,必须先关闭自动提交或显式开启事务:

ROLLBACK 的基本用法

在事务过程中,执行 ROLLBACK; 即可撤销所有未提交的 INSERTUPDATEDELETE 操作:

START TRANSACTION;
INSERT INTO users(name) VALUES('Alice');
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- 发现逻辑错误,不想保存
ROLLBACK;

执行后,插入和更新操作全部失效,数据恢复到 START TRANSACTION 之前的样子。

回滚到指定保存点(SAVEPOINT)

如果只想撤销部分操作,可用 SAVEPOINT 设置中间标记,再回滚到该点:

注意:RELEASE SAVEPOINT sp1; 可删除保存点,但不会影响数据。

哪些操作不能被 ROLLBACK?

ROLLBACK 对以下语句无效(它们会隐式提交当前事务):

一旦执行了这些语句,之前的修改就已提交,无法再用 ROLLBACK 撤销。