PostgreSQL 支持一个功能强大的规则系统,用于指定视图和模棱两可的视图更新。最初,PostgreSQL 规则系统包含两个实现
第一个使用行级处理,并在执行器中深度实现。每当访问到单独的行时,都会调用规则系统。当Berkeley Postgres 项目的最后一个官方版本转变为Postgres95 时,该实现于 1995 年被移除。
规则系统的第二个实现是一种称为查询重写的技术。重写系统是一个模块,存在于解析器阶段和规划器/优化器之间。此技术仍在实现中。
查询重写器在第 41 章中有详细讨论,因此这里无需介绍。我们只会指出重写器的输入和输出都是查询树,也就是说,树中的表示或语义细节级别没有变化。重写可以看作一种宏扩展形式。