46.4. 事务管理
- SPI_commit — commit the current transaction
- SPI_rollback — abort the current transaction
- SPI_start_transaction — start a new transaction
不能通过SPI_execute
这样的SPI函数运行COMMIT
和ROLLBACK
之类的事务控制命令。不过,也有单独的接口函数允许通过SPI进行事务控制。
如果不考虑被调用的上下文,在任意的用户定义的可从SQL调用的函数中开始以及结束事务通常并不是安全和明智的。例如,一个事务位于一个函数内,而该函数是某个SQL命令中的一个复杂SQL表达式的一部分,这样的事务有可能会导致隐蔽的内部错误或者崩溃。这里介绍的接口函数的主要目的是被过程语言的实现用于支持在CALL
命令调用的SQL层过程中进行事务管理,同时把CALL
调用的上下文也加以考虑。用C实现的使用SPI的过程可以实现同样的逻辑,但是其细节超出了这份文档的范围。
文章转载自PostgreSQL全球开发组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。