PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

39.4. 针对 INSERT、UPDATE 与 DELETE 的规则 #

39.4.1. 更新规则的工作机制
39.4.2. 更新规则与视图的配合

针对数据修改命令定义的规则,其执行时机会在原始语句派生的查询树上生效。规则支持两种模式:

在规则定义内部,可以使用特殊的伪关系 NEW 引用待写入的新数据行,使用 OLD 引用被更新或删除的存量行。

39.4.1. 更新规则的工作机制 #

当为带有数据修改的命令定义规则时,规划器会先根据原始命令生成查询树,随后触发规则系统。

39.4.1.1. 初识更新规则 #

如果一条规则声明为 DO INSTEAD,原始命令的查询树会被丢弃,规则中声明的动作查询树将取而代之;如果声明为 DO ALSO,原始命令与规则动作会同时生成并在同一事务中依次执行。

39.4.2. 更新规则与视图的配合 #

通过编写以视图为目标关系的更新规则,并在规则的动作体中使用底层实际基表,可以将外部对视图逻辑列的修改透明映射为底层一张或多张物理基表的更新操作。