温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Savepoint保存点与回滚有何区别

发布时间:2026-11-05 03:49:47 来源:亿速云 阅读:94 作者:小樊 栏目:数据库

在数据库事务处理中,**Savepoint(保存点)和Rollback(回滚)**都与“撤销操作”有关,但作用和粒度不同。下面从概念、使用方式和区别几个方面说明。


一、基本概念

1. Savepoint(保存点)

  • 是事务过程中的一个中间标记点
  • 用于在事务中划分阶段,方便后续部分回退
  • 不会结束事务
SAVEPOINT sp1;

2. Rollback(回滚)

  • 用于撤销事务中的操作
  • 可以:
    • 回滚整个事务
    • 回滚到某个 Savepoint
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 的具体语法再举例说明。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手