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