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