在不同的数据库和编程语言中,删除(或说释放/回滚掉)一个 Savepoint(保存点) 的方式略有不同。下面按常见情况说明。
在 SQL 里,Savepoint 不能被单独“删除”,通常有两种处理方式:
-- 设置保存点
SAVEPOINT sp1;
-- 释放保存点(相当于“删除”)
RELEASE SAVEPOINT sp1;
✅
RELEASE SAVEPOINT会移除该保存点
❌ 不支持单独“隐藏”或“禁用”保存点
Oracle 不支持 RELEASE SAVEPOINT:
SAVEPOINT sp1;
-- 只能通过回滚来“消除”影响
ROLLBACK TO sp1;
事务提交或回滚后,所有 Savepoint 自动失效
SQL Server 使用 事务名 作为保存点:
BEGIN TRANSACTION;
SAVE TRANSACTION sp1;
-- 回滚到保存点
ROLLBACK TRANSACTION sp1;
-- 提交后保存点自动消失
COMMIT TRANSACTION;
❌ 没有
RELEASE SAVEPOINT
conn.setAutoCommit(false);
Savepoint sp = conn.setSavepoint("sp1");
// 释放保存点(JDBC 标准)
conn.releaseSavepoint(sp);
| 数据库 | 删除 Savepoint 方式 |
|---|---|
| MySQL | RELEASE SAVEPOINT name |
| PostgreSQL | RELEASE SAVEPOINT name |
| Oracle | 只能 ROLLBACK TO 或提交事务 |
| SQL Server | ROLLBACK 到保存点或提交事务 |
如果你能告诉我:
我可以给你更精准的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。