[pgsql-jp: 32539] トリガ内で別テーブルにinsertした際の反映タイミング

清田 知嗣 seita @ adv-net.co.jp
2004年 3月 23日 (火) 10:07:06 JST


seitatoyuです。 
初めて投稿させていただきます。 

あるテーブルに対してUPDATEをした際 
トリガを起動させストアド内で別テーブルに対して 
insertを行っております。 

この際insertの反映のタイミングはトリガが終了した時点なのでしょうか? 

トリガとストアドの内容は以下の通りです。 

create function func_test() returns trigger as 
' 
begin 
  FOR j IN 1..100000 LOOP 
    insert into i_test values(12345); 
  END LOOP; 
  return NEW; 
end; 
' 
language 'plpgsql' 
; 

CREATE TRIGGER tri_test AFTER INSERT OR UPDATE ON 
c_test FOR EACH ROW EXECUTE PROCEDURE func_test(); 

上記のようにc_testをUPDATEした際tri_testトリガが起動し、 
func_test()が呼び出されます。 
func_test()では10万件のデータをi_testにinsertしてます。 

登録状態の監視を行おうと思い 
処理の途中でselect count(*) from i_testとしても 
実行前の件数しか表示されません。 

トリガ終了後に改めて確認してみると10万件登録した件数が表示されます。 

私の理想としては1件ずつinsertが反映され 
監視が行えるようにしたいと思っております。 

これは無理!
こんな方法はどう? 
などありましたら宜しくお願い致します。




pgsql-jp メーリングリストの案内