在数据库中,Savepoint(保存点) 是一种事务控制机制,用于在一个事务(Transaction)内部设置“标记点”,以便后续可以部分回滚,而不是回滚整个事务。
在数据库事务中:
ROLLBACK:回滚整个事务COMMIT:提交整个事务但有时候,我们希望:
这时就需要 Savepoint。
SAVEPOINT sp1;
ROLLBACK TO sp1;
RELEASE SAVEPOINT sp1;
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;
✅ 结果:
✅ 支持细粒度回滚
✅ 一个事务可多处使用
✅ 不退出事务(与 ROLLBACK 不同)
❌ 不能跨事务使用
❌ 不是所有数据库都完全支持(但主流都支持)
SAVE TRANSACTION)如果你愿意,我也可以:
你更想了解哪一部分?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。