codecamp

PostgreSQL 规则和命令状态

PostgreSQL服务器为它收到的每个命令返回一个命令状态字符串,例如INSERT 149592 1。没有涉及规则时这很简单,但是查询被规则重写时会发生什么呢?

规则对命令状态的影响如下:

  • 如果没有查询的无条件INSTEAD规则,那么原始给出的查询将会被执行,并且它的命令状态将像平常一样被返回(但是请注意如果存在任何有条件INSTEAD规则,那么它们的反条件将被加到原始查询中。这样可能会减少它处理的行数,并且报告的状态将受影响)。

  • 如果有查询的任何无条件INSTEAD规则,那么原始查询将完全不被执行。在这种情况下,服务器将返回由服务器将返回由INSTEAD规则(有条件的或无条件的)插入的最后一条和原始查询命令类型(INSERTUPDATEDELETE)相同的查询的命令状态。如果任何规则添加的查询都不符合这些要求,那么返回的命令状态显示原始查询类型并且行计数和 OID 域为零。

通过为任何想要的INSTEAD规则指定在活动规则中排名最后的规则名,程序员可以确保该规则都是在第二种情况里设置命令状态的规则,因为它会被最后一个应用。

PostgreSQL 规则和权限
PostgreSQL 规则 vs 触发器
温馨提示
下载编程狮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; }