[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 メーリングリストの案内