Redrock Postgres 搜索 英文
版本: 11 / 12 / 13 / 14 / 15 / 16 / 17

45.4. 事务管理 #

SPI_commit — 提交当前事务
SPI_rollback — 中止当前事务
SPI_start_transaction — 已过时的函数

无法通过 SPI 函数(如 SPI_execute)运行事务控制命令(如 COMMITROLLBACK)。但是,某些单独的接口函数可通过 SPI 对事务进行控制。

不要在任意用户定义的可通过 SQL 调用的函数中启动和结束事务,并且不对其调用上下文进行考虑,这样做通常既不安全也不明智。例如,一个复杂 SQL 表达式(作为某个 SQL 命令的一部分)中函数中间的事务边界可能会导致模棱两可的内部错误或崩溃。此处提供的接口函数主要供过程语言实现使用,以支持 CALL 命令调用的 SQL 级过程中的事务管理,同时要考虑 CALL 调用的上下文。在 C 中实现的 SPI 使用过程可以实现相同的逻辑,但实现的详细信息超出了本文档的范围。