SPI(や他の任意のC関数)を使用する関数内のデータの可視性は、以下の規則に従います。
SQLコマンドの実行中、そのコマンド(や、トリガ関数を含む、そのコマンドから呼び出される関数)で行なわれたデータ変更はそのコマンドからは不可視です。 例えば、
INSERT INTO a SELECT * FROM a;
というコマンドでは、挿入された行はSELECT部分からは不可視です。
コマンドCで行なわれた変更は、Cの後に開始されたすべてのコマンドからは可視です。 Cの内側(処理中)に開始したかCの処理後に開始したかは関係ありません。
次節には、これら規則の適用についてを示す例があります。