PostgreSQL soporta un potente sistema de reglas (rule system) para la especificación de vistas (views) y de actualizaciones de vistas ambiguas. Originalmente, el sistema de reglas de PostgreSQL constaba de dos implementaciones:
La primera funcionaba mediante el procesamiento a nivel de fila (row level) y estaba implementada en lo profundo del ejecutor (executor). El sistema de reglas se llamaba cada vez que se accedía a una fila individual. Esta implementación fue eliminada en 1995 cuando la última versión oficial del proyecto Berkeley Postgres se transformó en Postgres95.
La segunda implementación del sistema de reglas es una técnica llamada reescritura de consultas (query rewriting). El sistema de reescritura (rewrite system) es un módulo que existe entre la etapa del analizador y el planificador/optimizador. Esta técnica todavía está implementada.
El reescribidor de consultas se discute con cierto detalle en el Chapter 39, por lo que no es necesario cubrirlo aquí. Solo señalaremos que tanto la entrada como la salida del reescribidor son árboles de consulta, es decir, no hay cambios en la representación ni en el nivel de detalle semántico en los árboles. La reescritura puede considerarse como una forma de expansión de macros.