不能通过 SPI_execute 这类 SPI 函数运行 COMMIT、ROLLBACK 之类的事务控制 命令。不过,也有单独的接口函数允许通过 SPI 进行事务控制。
如果不考虑调用上下文,那么在任意用户定义的、可从 SQL 调用的函数中开 始和结束事务,通常既不安全也不合理。例如,如果某个函数处在某条 SQL 命 令的复杂 SQL 表达式中间,那么在该函数内部设置事务边界,很可能会导致隐 蔽的内部错误甚至崩溃。这里介绍的接口函数,主要是供过程语言实现使用,以 支持由 CALL 命令调用的 SQL 层过程进行事务管理,并 且会把 CALL 调用的上下文考虑在内。用 C 实现、使用 SPI 的过程也可以实现同样的逻辑,但具体细节超出了本文档的范围。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。