PostgreSQL
PrevChapter 39. TriggersNext

Visibility of Data Changes

Postgres データは可視規則を変えます: 問 い合わせ実行の間、データの変更は問い合わせ自身で(SQL-関数,SPI-関数, ト リガー等を通して)行なわれ、問い合わせ走査に対しては不可視です。たとえば、 問い合わせの中で:

   INSERT INTO a SELECT * FROM a
挿入されたタップルは SELECT 走査には対しては不可視です。影響として、 それ自身のテーブルの中でデータベースを再帰することなく重複させます (もちろん、一意の索引の規則に従って)。

しかしながら、SPI 文書の中の可視性についてのこの注意書きは心に留め ておいて下さい:

   問い合わせ Q によりなされる変更は、問い合わせの後に開始される問い合わせ
   に対しては可視で、それらが Q の中で(Q の実行中に)開始されるかあるいは Q 
   が実行された後かには無関係です。

これはトリガーにとっては当たり前のことですが、挿入されるタップル (tg_trigtuple) は前(BEFORE)トリガーの中の問い合わせに対しては可視で は無く、この(丁度挿入される)タップル後(AFTER)トリガーの中の問い合わ せ、BEFORE/AFTER トリガーの中でこの後に発行される問い合わせに対して は可視です!


PrevHomeNext
Interaction with the Trigger ManagerUpExamples