PostgreSQLサーバでは、受け取った問い合わせのそれぞれに対して、INSERT 149592 1
のようなコマンド状態文字列を返します。
これは簡単ですが、ルールが使用されていない場合には十分なものです。
しかし、問い合わせがルールにより書き換えられた場合、どのようになるでしょうか。
ルールはコマンド状態に以下のように影響を与えます。
問い合わせに無条件のINSTEAD
ルールが使用されていない場合、元々与えられていた問い合わせが実行され、そのコマンド状態は通常通り返されます
(しかし、条件付きINSTEAD
ルールが使用されている場合、その条件の否定が元の問い合わせに追加されることに注意してください。
これにより、処理する行の数が減り、その結果報告される状態が影響を受けるかもしれません)。
問い合わせに無条件のINSTEAD
ルールが使用されている場合、元の問い合わせはまったく実行されません。
この場合、サーバでは、(条件付きもしくは無条件の)INSTEAD
ルールによって挿入され、かつ、元の問い合わせと同じ種類(INSERT
、UPDATE
またはDELETE
)の最後の問い合わせについてコマンド状態を返します。
この条件に合致する問い合わせがルールによって追加されない場合、返されるコマンド状態は、元の問い合わせの種類と行数およびOIDフィールドに0が表示されます。
後者の場合、プログラマは、有効ルールの中でアルファベット順の最後のルール名を与えることによって、必要なINSTEAD
ルールを最後に実行することができます。そして、そのことによって、コマンド状態が確実にそのルールで設定されるようにできます。