什么是 ROLLBACK?
ROLLBACK 是 SQL 中用于撤销当前事务中所有未提交更改的命令。
在数据库事务处理中,如果发生错误或需要取消操作,可以使用 ROLLBACK 将数据库状态恢复到事务开始之前。
基本语法
START TRANSACTION; -- 执行一些 SQL 操作(如 INSERT、UPDATE、DELETE) ROLLBACK; -- 撤销所有更改
注意:只有在事务中(显式或隐式开启)才能使用 ROLLBACK。
使用示例(以 MySQL 为例)
-- 开启事务
START TRANSACTION;
-- 插入一条测试数据
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
-- 查询确认(此时其他会话不可见)
SELECT * FROM users WHERE name = '张三';
-- 回滚事务
ROLLBACK;
-- 再次查询,数据已消失
SELECT * FROM users WHERE name = '张三'; -- 返回空结果
适用场景
- 程序执行出错,需撤销中间操作
- 用户取消操作(如订单未完成)
- 测试环境中的临时数据清理
- 确保原子性:要么全部成功,要么全部失败
注意事项
- DDL 语句(如 CREATE、ALTER)通常会自动提交,无法回滚
- 某些存储引擎(如 MyISAM)不支持事务,因此不支持 ROLLBACK
- ROLLBACK 只对未提交(COMMIT)的更改有效