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