47.4. TransactionManagement

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

在不考虑调用它们的上下文的情况下,在任意用户定义的 SQL 可调用函数中开始和结束事务通常是不安全且不明智的。例如,作为某些 SQL 命令一部分的复杂 SQL 表达式的一部分,函数中间的事务边界可能会导致模糊的内部错误或崩溃。这里介绍的接口函数主要供过程语言实现使用,以支持CALL命令调用的 SQL 级过程中的事务 Management,同时考虑到CALL调用的上下文。用 C 实现的使用 SPI 的过程可以实现相同的逻辑,但是其详细信息不在本文档的讨论范围之内。