如何回滚事务_mysql rollback用法

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

MySQL 中的

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

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

MySQL 默认是自动提交模式(

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

执行
SET autocommit = 0;
(后续所有修改都需手动
COMMIT
ROLLBACK
或执行
START TRANSACTION;
/
BEGIN;
(仅对当前会话本次事务有效)

ROLLBACK 的基本用法

在事务过程中,执行

ROLLBACK;
即可撤销所有未提交的
INSERT
UPDATE
DELETE
操作:

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

执行后,插入和更新操作全部失效,数据恢复到

START TRANSACTION
之前的样子。

回滚到指定保存点(SAVEPOINT)

如果只想撤销部分操作,可用

SAVEPOINT
设置中间标记,再回滚到该点:

定义保存点:
SAVEPOINT sp1;
执行更多修改 回滚到该点:
ROLLBACK TO SAVEPOINT sp1;

注意:

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

哪些操作不能被 ROLLBACK?

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

DDL 语句:如
CREATE
DROP
ALTER
表/库
锁相关语句:
LOCK TABLES
UNLOCK TABLES
管理类语句:
GRANT
REVOKE
SET PASSWORD

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

ROLLBACK
撤销。

相关推荐