# 41.6.规则和命令状态

PostgreSQL server返回命令状态字符串,例如插入149592 1,对于它接收到的每个命令。当不涉及规则时,这就足够简单了,但是当查询被规则重写时会发生什么呢?

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

  • 如果没有无条件相反规则,则将执行最初给定的查询,并像往常一样返回其命令状态。(但请注意,如果有任何条件相反根据规则,对其资格的否定将被添加到原始查询中。这可能会减少它处理的行数,如果是这样,报告的状态将受到影响。)

  • 如果有任何相反规则,则根本不会执行原始查询。在这种情况下,服务器将返回用户插入的最后一个查询的命令状态相反规则(有条件或无条件),并具有相同的命令类型(插入,使现代化删去)作为原始查询。如果任何规则都没有添加满足这些要求的查询,那么返回的命令状态将显示原始查询类型,行计数和OID字段为零。

    程序员可以确保任何想要的相反rule是在第二种情况下设置命令状态的规则,它按字母顺序给出活动规则中最后一个规则名,以便最后应用。