より、指定したテーブルまたはビューに適用するルールを新しく定義できます。使用すると、ルールを新しく作成するか、同じテーブルの同じ名前の既存ルールを置き換えるかのいずれかを実行します。PostgreSQLのルールシステムによって、データベーステーブルの挿入、更新、削除の代替として行われるアクションを定義することができます。大雑把にいうと、指定されたテーブルに指定されたコマンドが実行された時に、ルールによって実行されるコマンドが追加されます。その他にも、ルールによって、指定されたコマンドを他のコマンドに置き換えることも、まったくコマンドを実行させないようにすることも可能です。ルールはテーブルビューを実装するためにも使われます。ルールは本当にコマンドを変換する機構、もしくは、コマンドマクロであることを認識することが重要です。この変換はコマンドの実行が始まる前に発生します。実際に各物理行に独立した操作を行いたい場合、おそらくルールではなくトリガを使用することでしょう。SELECTルールは無条件のINSTEADルールでなければならず、単一SELECTコマンドで成り立つアクションを持っていなければなりません。コマンドによって返された行です。VIEWコマンドを書く方がよい形式とされています。ルール(もしくは、目的に応じてこのうちの一部)を定義して、ビューへの更新操作を他のテーブルへの適切な更新操作に置換することで、更新可能なビューという幻を作成することができます。ビューの更新の際に条件付きルールの使用を予定している場合、罠があります。ない場合、システムは更新操作の試行を拒絶します。その場合、ある条件でビューのダミーテーブルへの操作を行なうことになるとシステムがみなすからです。ルールを追加し、システムにダミーテーブルへの更新を行なうことが決してないことを理解させることで、それを実現することができます。でない条件付きルールを作成します。パラメータname作成するルールの名前です。この名前は、同じテーブルの他のルールとは異なる名前にする必要があります。複数の同一テーブル、同一イベント種類のルールがあった場合、その名前のアルファベット順で適用されます。eventイベントとは、SELECT、INSERT、UPDATE、DELETEのいずれかです。(スキーマ修飾名でも可)。以外は、どのテーブルも参照できません。集約関数を含めることもできません。commandルールのアクションを構成する単数または複数のコマンドです。SELECT、INSERT、UPDATE、DELETE、NOTIFY文です。参照されるテーブルの値を参照するために使用できます。ルールで、挿入または更新されている新しい行を参照するのに有効です。ルールで、更新または削除されている既存の行を参照するのに有効です。循環ルールを避けるために注意を払うことはとても重要です。下記の2つのルールそれぞれがPostgreSQLに受け入れられた場合、SELECTコマンドは、問い合わせが何度も循環しすぎたためにPostgreSQLにエラーを表示させます。無条件に実行されます。42を持つ行があってもなくても、1つのNOTIFYイベントがUPDATEの際に送信されます。これは実装上の制限であり、将来のリリースでは修正されるかもしれません。