PostgreSQL には、ビューと理解のしかたでどうとも取れるビューの更新の仕様に対応する強力なルールシステムがあります。もともと PostgreSQLのルールシステムは 2 つの実装で構成されていました。
初めの 1 つは行レベルの処理を使って動き、エクゼキュータの内部に深く実装されていました。個別の行がアクセスされるたび毎にルールシステムが呼ばれていました。この実装は 1995 年、最後のBerkeley PostgreSQLプロジェクトの公式リリースが Postgres95 へ移行する時に削除されました。
ルールシステムの 2 つ目の実装は問い合わせ書き換えと呼ばれる手法です。書き換えシステムは構文解析過程とプランナ/オプティマイザの間にあるモジュールです。この手法は現在でも実装されています。
問い合わせの書き換えについては 第34章 にて詳しく論議されますのでここでは取り扱いません。書き換えの入出力ともに問い合わせツリーであることを指摘するのにとどめます。というのはツリー内の表現の仕方とか語義をどの程度詳しく判断するかには影響がないからです。書き換えはマクロの拡張と捉えることもできます。