[pgsql-jp: 28281] データ可視性について
Makoto, Yui
yuin @ bb.din.or.jp
2002年 12月 13日 (金) 05:02:33 JST
油井と言います。
データの可視性について、質問があります。
あるユーザ関数の中でSPIを用いてinsert->updateと一連の処理しているのですが、
そのデータ変更に対してafter updateで呼び出されるトリガを作りました。
ここで問題なのですが、!after update!で呼び出したトリガの引数を調べてみると、
updateされた後の値ではなく、insert時の値を保持していました。
#トリガ自体はユーザ関数の処理を終えた後に、まとめて呼び出されてます。
ユーザ関数内で、3個所updateがあれば、実行後にそれぞれが呼び出される。
SPIの中で,トランザクション制御ができない現状では、これはどうしようもない
問題と捕えてよいものでしょうか?
しかし、updateもユーザ関数でinsertしたもの対してしていて、
そのinsertのデータが読めるってのがちょっと...???updateは読めないのにと。
#試してないけど、after insertなら正常な値が取れそうな予感が。
logはこんな感じです。
<ユーザ関数>
NOTICE: [create_new_document]enter
NOTICE: Query:insert into xml_node(id,kind,document) values('0356320000040000',-1,'0356320000040000')
NOTICE: Query:update xml_node set kind=0, document='2002343000003000' where id='0356320000040000'
NOTICE: [create_new_document]exit
<after update トリガ>
NOTICE: Enter Function [trg_xorder]
NOTICE: attribute...id values=0356320000040000 in relation xml_node
NOTICE: attribute...kind values=-1 in relation xml_node
NOTICE: attribute...document values=0356320000040000 in relation xml_node
NOTICE: attribute...parent values=(null) in relation xml_node
何かわかる方いましたら、アドバイスをお願いします。
因に実行環境は、Linux,PostgreSQL7.3(7.2.3でも同様)です。
+-------------------------------------------------------------------+
Makoto, Yui <yuin @ bb.din.or.jp>
Key fingerprint = 6462 E285 97D8 1323 40C4 F9E5 EB0F 9DE6 1713 219E
+-------------------------------------------------------------------+
pgsql-jp メーリングリストの案内