↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11
历史版本。 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 的过程也可以实现同样的逻辑,但具体细节超出了本文档的范围。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.