Table of Contents
本章深入探讨 PostgreSQL 的查询重写规则系统(Rule System)。规则系统在概念上极其优雅,但在实际工程运用中涉及到大量深层次的技术细节。
其他部分数据库系统常通过活动规则(通常指存储过程与触发器)来实现动态业务约束。在 PostgreSQL 中,这些需求同样可以通过常规函数与触发器来实现。
然而,PostgreSQL 的查询重写规则系统与存储过程和触发器有着本质的不同:它直接在 SQL 语法解析树层面介入,在优化器制定物理执行计划之前,根据预设的规则对查询语法树执行就地重写或派生改写,随后将改写后的新查询树递交给优化器。它拥有极其强大的能力,是支撑数据库实现普通视图、可更新视图以及底层元数据抽象的核心支柱。