在数据库事务处理中,**Savepoint(保存点)和Rollback(回滚)**都与“撤销操作”有关,但作用和粒度不同。下面从概念、使用方式和区别几个方面说明。
SAVEPOINT sp1;
ROLLBACK; -- 回滚整个事务
ROLLBACK TO sp1; -- 回滚到保存点
| 对比项 | Savepoint(保存点) | Rollback(回滚) |
|---|---|---|
| 本质 | 标记点 | 撤销操作 |
| 是否撤销数据 | 否 | 是 |
| 是否结束事务 | 否 | 整个回滚会结束事务 |
| 作用范围 | 局部(某点之后) | 全局或局部 |
| 使用目的 | 精细化控制 | 恢复错误状态 |
BEGIN;
UPDATE account SET balance = balance - 100 WHERE id = 1;
SAVEPOINT sp1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
-- 发现第二步有问题
ROLLBACK TO sp1;
-- 只撤销第二步,第一步仍然有效
COMMIT;
✅ 结果:
Savepoint 是“中途标记”,Rollback 是“撤销动作”;
Savepoint 本身不回滚,但可以让 Rollback 更精细。
如果你愿意,我也可以用 MySQL / Oracle / PostgreSQL 的具体语法再举例说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。