返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

35.5. 规则和命令状态

发布于 2019-09-30 03:09:26 字数 684 浏览 898 评论 0 收藏 0

PostgreSQL 服务器为它收到的每个命令返回一个命令状态字符串,比如 INSERT 149592 1 。如果没有涉及规则,那么这些就很简单,但是如果查询是被规则重写的又会怎样呢?

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

  • 如果查询不存在无条件的 INSTEAD 规则,那么最初给出的查询将会被执行,并且它的命令状态将像平常一样返回。但是请注意如果存在任何条件 INSTEAD 规则,那么他们的条件的反条件将会已经加到最初的查询里了。这样可能会减少它处理的行数,如果这样的话,报告状态将受影响。

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

程序员可以用下面的方法确保任何需要的 INSTEAD 规则都是在上面第二种情况里设置命令状态的规则:给这个规则命名为字母顺序最后一个活动的规则,这样它就最后附加。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文