[pgsql-jp: 33709] Re: 【再質問】UPDATE のTrigger 内で発行したInsert がwait
TANIDA Yutaka
tanida @ sra.co.jp
2004年 7月 20日 (火) 15:54:30 JST
谷田です。
On Tue, 20 Jul 2004 06:41:40 +0000
白神 正雄 <shiraga_masao2 @ hotmail.com> wrote:
> 現状、次のような処理でInsertがwait状態になってしまい、返ってきません。
>
> 【OS:RedHat ES, DB:Postgres7.3.6】
> TABLE_A : Updateトリガー(AFTER) ・・・C言語関数呼び出し
> |
> +−shell起動 <成功>
> ・ |
> ・ +−【WindowsXP】フォルダにsmbmount <成功>
> ・ |
> ・ +−C++で作成のexe(要するに実行形式)を起動
> ・ ・ |
> ・ ・ +−【WindowsXP】フォルダにある
> ・ ・ ・ CSVファイルを読み込み、
> ・ ・ ・ TABLE_Bにインサート
> ・ ・ ・ ↑↑↑↑↑↑↑↑↑↑↑↑↑↑
> ・ ・ ・ ここでinsert wait(ToT)
> ・ ・ |
> ・ ・ +−正常時戻り値0
> ・ ・ I/Oエラーなどあれば戻り値1
> ・ ・ |
> ・ +−−+
> ・ |
> ・ +C++のexeの戻り値をそのままC言語関数に返す
> ・ |
> +−−+
> |
> +C++のexeが戻り値0ならTABLE_Aのフラグ=4
> 戻り値1ならTABLE_Aのフラグ=5
> |
> |
> <終了>
>
>
> 上記の処理の中で、shell以下は、単体では、バリバリに動きます。
>
> が、そのshellをトリガーとして登録した関数から起動するように
> すると、insert wait状態になり、一行もinesertできなくなるんです。
ところで、このINSERT文はどのロックを待っているんでしょうか?それが分から
ないことには、解決のしようがないと思うのですが。
とりあえず、select * from pg_locksの出力を調べてみてはいかがでしょうか。
--
TANIDA Yutaka <tanida @ sra.co.jp>
pgsql-jp メーリングリストの案内