SAVEPOINT
SAVEPOINT — 在当前事务中定义一个新的保存点
大纲
SAVEPOINTsavepoint_name
复制
描述
SAVEPOINT
在当前事务中建立一个新保存点。
保存点是事务内的一种特殊标记,它允许所有在它被建立之后执行的命令被 回滚,把该事务的状态恢复到它处于保存点时的样子。
参数
savepoint_name
给新保存点的名字。
注解
使用ROLLBACK TO SAVEPOINT回滚到一个保存点。 使用RELEASE SAVEPOINT销毁一个保存点, 但保持在它被建立之后执行的命令的效果。
保存点只能在一个事务块内建立。可以在一个事务内定义多个保存点。
示例
要建立一个保存点并且后来撤销在它建立之后执行的所有命令的效果:
BEGIN; INSERT INTO table1 VALUES (1); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (2); ROLLBACK TO SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (3); COMMIT;复制
上面的事务将插入值 1 和 3,但不会插入 2。
要建立并且稍后销毁一个保存点:
BEGIN; INSERT INTO table1 VALUES (3); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (4); RELEASE SAVEPOINT my_savepoint; COMMIT;复制
上面的事务将插入 3 和 4。
兼容性
当建立另一个同名保存点时,SQL 要求之前的那个保存点自动被销毁。在
PostgreSQL中,旧的保存点会被保留,不过在进行
回滚或释放时只能使用最近的那一个(用
RELEASE SAVEPOINT
释放较新的保存点将会
导致较旧的保存点再次变得可以被
ROLLBACK TO SAVEPOINT
和
RELEASE SAVEPOINT
访问)。在其他方面,
SAVEPOINT
完全符合 SQL。
文章转载自PostgreSQL全球开发组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
明明想执行的SQL是DELETE、UPDATE,但为什么看到的是SELECT(FDW的实现原理解析)
小满未满、
381次阅读
2025-03-19 23:11:26
PostgreSQL初/中/高级认证考试(3.15)通过考生公示
开源软件联盟PostgreSQL分会
357次阅读
2025-03-20 09:50:36
IvorySQL 4.4 发布 - 基于 PostgreSQL 17.4,增强平台支持
通讯员
225次阅读
2025-03-20 15:31:04
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
223次阅读
2025-04-07 12:14:29
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
218次阅读
2025-04-11 10:43:23
命名不规范,事后泪两行
xiongcc
205次阅读
2025-03-13 14:26:08
PG vs MySQL 执行计划解读的异同点
进击的CJR
146次阅读
2025-03-21 10:50:08
版本发布| IvorySQL 4.4 发布
IvorySQL开源数据库社区
135次阅读
2025-03-13 09:52:33
PostgreSQL分区管理扩展——pg_partman
chirpyli
115次阅读
2025-03-19 15:48:31
手把手教你在 openKylin 上部署 IvorySQL 4.4
严少安
113次阅读
2025-03-27 20:41:28