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

45.4. 事务管理 #

SPI_commit — 提交当前事务
SPI_rollback — 回滚当前事务
SPI_start_transaction — 废弃函数

不能通过 SPI_execute 这类 SPI 函数运行 COMMITROLLBACK 之类的事务控制 命令。不过,也有单独的接口函数允许通过 SPI 进行事务控制。

如果不考虑调用上下文,那么在任意用户定义的、可从 SQL 调用的函数中开 始和结束事务,通常既不安全也不合理。例如,如果某个函数处在某条 SQL 命 令的复杂 SQL 表达式中间,那么在该函数内部设置事务边界,很可能会导致隐 蔽的内部错误甚至崩溃。这里介绍的接口函数,主要是供过程语言实现使用,以 支持由 CALL 命令调用的 SQL 层过程进行事务管理,并 且会把 CALL 调用的上下文考虑在内。用 C 实现、使用 SPI 的过程也可以实现同样的逻辑,但具体细节超出了本文档的范围。