温馨提示×

温馨提示×

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

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

Savepoint保存点会失效吗

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

Savepoint(保存点)是会“失效”或失效/不可用的,具体取决于数据库类型、操作以及环境。下面以常见的关系型数据库(Oracle / PostgreSQL / MySQL 等)来说明。


一、Savepoint 什么时候会“失效”

1️⃣ 事务提交(COMMIT)后

SAVEPOINT sp1;
...
COMMIT;
  • 提交后,所有 Savepoint 自动失效
  • 无法再 ROLLBACK TO sp1

✅ 结论:事务结束 = Savepoint 失效


2️⃣ 事务回滚到某个 Savepoint(部分回滚)

SAVEPOINT sp1;
SAVEPOINT sp2;
ROLLBACK TO sp1;
  • sp1 仍然有效
  • sp2 及之后的 Savepoint 全部失效

✅ 结论:回滚到早期 Savepoint,后续 Savepoint 失效


3️⃣ 事务回滚(ROLLBACK,不带 TO)

ROLLBACK;
  • 整个事务回滚
  • 所有 Savepoint 全部失效

4️⃣ 连接断开 / 会话结束

  • 数据库会话断开
  • 连接池回收连接
  • 应用崩溃

➡ Savepoint 随事务一起消失


5️⃣ 某些 DDL 操作(数据库相关)

Oracle

  • 执行 DDL(如 CREATE / ALTER / DROP)
  • 事务隐式提交
  • Savepoint 全部失效

PostgreSQL

  • DDL 在事务中是安全的
  • Savepoint 仍然可用(PostgreSQL 很强)

MySQL(InnoDB)

  • 部分 DDL 会隐式提交
  • Savepoint 失效

二、Savepoint 不会“自动过期”

  • Savepoint 没有时间限制
  • 只要:
    • 事务没提交
    • 没回滚
    • 连接没断 ➡ 它就一直有效

三、常见误区

❌ “Savepoint 会超时失效”
✅ 不会,数据库不按时间失效

❌ “Savepoint 能跨事务”
✅ 不能,只能在一个事务内


四、总结一句话

Savepoint 会失效,但只因为:事务结束、回滚、连接断开或隐式提交,而不是时间。

如果你说的是 Flink / Spark 的 Savepoint,或者某个具体数据库(Oracle / PG / MySQL),可以告诉我,我可以针对性讲。

向AI问一下细节

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

AI
助
手