【问题标题】:Postgresql RULE orderPostgresql 规则顺序
【发布时间】:2017-04-01 09:40:37
【问题描述】:

将规则应用于 INSERT 时触发的顺序是什么?

它们是在插入记录之后还是之前完成的。

我要做的是在另一个表中创建一条新记录,该记录将链接到插入的记录。

举个例子;制定一个规则来创建一个新页面,当一个文档被创建时,一个文档总是以一个空的页面记录开始。

我看高又低,也许我在向 Google 提出错误的问题,但我找不到任何有关 RULES 执行顺序的文档。

【问题讨论】:

    标签: postgresql sql-insert rules


    【解决方案1】:

    Quote from the manual

    同一张表和同一个事件类型上的多个规则按字母名称顺序应用。

    所以排序不依赖于规则的类型,只依赖于名称。

    它还解释了规则是如何“应用”的

    重要的是要认识到规则实际上是一种命令转换机制或命令宏。 转换发生在命令开始执行之前

    强调我的

    因此,规则不会在语句运行“之前”或“之后”发生 - 它运行而不是该语句。


    我要做的是在另一个表中创建一条新记录,该记录将链接到插入的记录。

    您肯定需要一个 AFTER INSERT 触发器。忘记规则。

    这也是手册推荐的内容:

    如果您确实想要为每个物理行独立触发的操作,您可能希望使用触发器,而不是规则

    【讨论】:

    • 嗯,但是ALSO规则呢……这些都是在“除了原来的命令”之外运行的,所以应该有命令吧?
    猜你喜欢
    • 2021-02-26
    • 2023-03-25
    • 1970-01-01
    • 2012-01-19
    • 2018-11-25
    • 1970-01-01
    • 2022-07-18
    • 2017-11-22
    • 2018-04-20
    相关资源
    最近更新 更多