他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

13.6. ルールおよびコマンドの状態

PostgreSQL サーバでは、受け取った問い合わせのそれぞれに対して、INSERT 149592 1 のようなコマンド状態文字列を返します。 これは、ルールが使用されていない場合、非常にシンプルです。しかし、問い合わせがルールにより書き換えられた場合、どのようになるでしょうか。

PostgreSQL 7.3 では、ルールはコマンド状態に以下のように影響を与えます。

  1. 問い合わせに無条件の INSTEAD ルールが使用されていない場合、もともと記述されていた問い合わせが実行され、そのコマンド状態は通常通り返されます。 (しかし、条件付き INSTEAD ルールが使用されている場合、その条件の否定が元の問い合わせに追加されることに注意してください。 これにより、処理する行の数が減り、その結果報告される状態が影響を受けるかもしれません。)

  2. 問い合わせに無条件の INSTEAD ルールが使用されている場合、元の問い合わせは全く実行されません。 この場合、サーバでは、(条件付きもしくは無条件の) INSTEAD ルールによって挿入された、元の問い合わせと同じ型 (INSERT、UPDATE、または DELETE) の最後の問い合わせについてコマンド状態を返します。 上記の条件に合致する問い合わせがルールによって追加されない場合、その返されたコマンド状態では、タプルカウントおよび OID フィールドに元の問い合わせの型および 0 が表示されます。

後者の場合、プログラマは、アクティブなルールの中でアルファベット順の最後のルール名を与えることによって、必要な INSTEAD ルールを最後に実行することができます。そして、そのことによって、コマンド状態が確実にそのルールで設定されるようにできます。