Skip to content

47.4. 事务管理#

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

无法通过SPI_execute等 SPI 函数运行事务控制命令,例如COMMITROLLBACK。但是,有单独的接口函数允许通过 SPI 进行事务控制。

在任意用户定义的 SQL 可调用函数中启动和结束事务通常是不安全且不合理的,因为没有考虑调用这些函数时的上下文。例如,在作为某个 SQL 命令一部分的复杂 SQL 表达式的一部分的函数中间的事务边界可能会导致模糊的内部错误或崩溃。此处介绍的接口函数主要供过程语言实现使用,以支持由CALL命令调用的 SQL 级过程中的事务管理,同时考虑CALL调用的上下文。使用 C 实现的 SPI 使用过程可以实现相同的逻辑,但其详细信息超出了本说明文件的范围。