PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

45.4. 事务管理 #

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

无法通过 SPI_execute 之类的 SPI 函数运行 COMMIT 和 ROLLBACK 这样的事务控制命令。 不过,有一些单独的接口函数允许通过 SPI 进行事务 控制。

在任意的用户定义 SQL 可调用函数中开始和结束事务而不考虑它们 被调用的上下文,通常既不安全也不合理。 例如,作为某条 SQL 命令所含复杂 SQL 表达式一部分的函数中间的 一个事务边界,很可能会导致隐晦的内部错误或崩溃。 这里给出的接口函数主要打算供过程语言实现使用,以支持由 CALL 命令调用的 SQL 层面过程中的事务 管理,并考虑 CALL 调用的上下文。 用 C 实现的使用 SPI 的过程可以实现相同的逻辑, 但其细节超出了本文档的范围。