历史版本。 PostgreSQL 12 已结束支持。 2024-11-21. 请参阅 当前版本手册.
46.4. 事务管理 #
- SPI_commit — 提交当前事务
- SPI_rollback — 中止当前事务
- SPI_start_transaction — 废弃函数
不能通过 SPI_execute 这类 SPI 函数运行
COMMIT、ROLLBACK 之类的事务控制命令。不过,也有单独的接口函数允许通过 SPI 进行事务控制。
如果不考虑调用上下文,那么在任意用户定义的、可从 SQL 调用的函数中开始和结束事务,通常既不安全也不合理。例如,如果某个函数处在某条 SQL 命令的复杂 SQL 表达式中间,那么在该函数内部设置事务边界,很可能会导致隐蔽的内部错误甚至崩溃。这里介绍的接口函数,主要是供过程语言实现使用,以支持由 CALL 命令调用的 SQL 层过程进行事务管理,并且会把 CALL 调用的上下文考虑在内。用 C 实现、使用
SPI 的过程也可以实现同样的逻辑,但具体细节超出了本文档的范围。