温馨提示×

温馨提示×

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

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

数据库Savepoint保存点是什么

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

在数据库中,Savepoint(保存点) 是一种事务控制机制,用于在一个事务(Transaction)内部设置“标记点”,以便后续可以部分回滚,而不是回滚整个事务。


一、为什么需要 Savepoint?

在数据库事务中:

  • ROLLBACK:回滚整个事务
  • COMMIT:提交整个事务

但有时候,我们希望:

  • 执行了一部分操作
  • 发现某一步出错
  • 只回滚到“某一步之前”
  • 其余操作仍然保留

这时就需要 Savepoint。


二、Savepoint 的基本概念

  • Savepoint 是事务中的中间标记
  • 一个事务中可以创建多个 Savepoint
  • 可以回滚到任意一个 Savepoint
  • 回滚到 Savepoint 不会结束事务

三、常见数据库中的 Savepoint 用法

1️⃣ 创建 Savepoint

SAVEPOINT sp1;

2️⃣ 回滚到 Savepoint

ROLLBACK TO sp1;

3️⃣ 释放 Savepoint(可选)

RELEASE SAVEPOINT sp1;

4️⃣ 提交事务

COMMIT;

四、示例说明

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 的数据库

  • ✅ Oracle
  • ✅ MySQL(InnoDB)
  • ✅ PostgreSQL
  • ✅ SQL Server(通过 SAVE TRANSACTION)

如果你愿意,我也可以:

  • 用 Java / MyBatis / Spring 示例讲 Savepoint
  • 对比 Savepoint vs 嵌套事务
  • 讲 Savepoint 在分布式事务中的限制

你更想了解哪一部分?

向AI问一下细节

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

AI
助
手