codecamp

PostgreSQL 事务管理

SPI_commit — commit the current transaction
SPI_rollback — abort the current transaction
SPI_start_transaction — start a new transaction

不能通过SPI_execute这样的SPI函数运行COMMITROLLBACK之类的事务控制命令。不过,也有单独的接口函数允许通过SPI进行事务控制。

如果不考虑被调用的上下文,在任意的用户定义的可从SQL调用的函数中开始以及结束事务通常并不是安全和明智的。例如,一个事务位于一个函数内,而该函数是某个SQL命令中的一个复杂SQL表达式的一部分,这样的事务有可能会导致隐蔽的内部错误或者崩溃。这里介绍的接口函数的主要目的是被过程语言的实现用于支持在CALL命令调用的SQL层过程中进行事务管理,同时把CALL调用的上下文也加以考虑。用C实现的使用SPI的过程可以实现同样的逻辑,但是其细节超出了这份文档的范围。


PostgreSQL SPI_freeplan
PostgreSQL SPI_commit
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }