PostgreSQL supporte un puissant système de règles pour la spécification des vues et des mises à jour de vues ambiguës. À l'origine, le système de règles de PostgreSQL était constitué de deux implantations :
la première, qui fonctionnait au niveau des lignes, était implantée profondément dans l'exécuteur. Le système de règles était appelé à chaque fois qu'il fallait accéder une ligne individuelle. Cette implantation a été supprimée en 1995 quand la dernière version officielle du projet Berkeley Postgres a été transformée en Postgres95 ;
la deuxième implantation du système de règles est une technique appelée réécriture de requêtes. Le système de réécriture est un module qui existe entre l'étape d'analyse et le planificateur/optimiseur. Cette technique est toujours implantée.
Le système de réécriture de requêtes est vu plus en détails dans le Chapitre 40. Il n'est donc pas nécessaire d'en parler ici. Il convient simplement d'indiquer qu'à la fois l'entrée et la sortie du système sont des arbres de requêtes. C'est-à-dire qu'il n'y a pas de changement dans la représentation ou le niveau de détail sémantique des arbres. La réécriture peut être imaginée comme une forme d'expansion de macro.