[pgsql-jp: 25460] Re: PL/pgSQLで一時テーブルの作成、挿入、削除の問題

SATO Hiroyuki hiroyuki @ navitime.co.jp
2002年 3月 28日 (木) 17:39:19 JST


お世話になっております。佐藤です。

From: Tatsuo Ishii <t-ishii @ sra.co.jp>
Subject: [pgsql-jp: 25456] Re: PL/pgSQLで一時テーブルの作成、挿入、削除の問題
Date: Thu, 28 Mar 2002 16:43:10 +0900

> > 次のような現象で困っております。
> > 
> > PL/pgSQLの関数で、一時テーブルを作成し、作成したテーブルに行
> > を挿入し、作成したテーブルを削除しています。この関数を1回目
> > に実行したときは、正常に動作するのですが、2回目以降動作しま
> > せん。
> 
> 石井@逃避モードです.時間がないので結論のみ書きます.解説は他の方にお
> 願い.

石井様、ご回答ありがとうございます。お陰様で目的を達成するこ
とができました。


From: sugita @ sra.co.jp
Subject: [pgsql-jp: 25457] Re: PL/pgSQLで一時テーブルの作成、挿入、削除の問題
Date: Thu, 28 Mar 2002 17:25:25 +0900 (JST)

>   杉田です。

>   リレーション test は、関数の最初のパーズ時に test の oid にマップされます。
> そして、test が DROP された後も test は、先の oid にマップされたままとなります。
> 次に関数が実行されたときに、新たにリレーション test が新しい oid で作成されま
> すが、関数内では、前の oid にマップされたままなので INSERT が失敗します。
> 
>   回避策は、execute 文によって実行時にパーズを行うことで、リレーション test に
> 新しいoid が使われるようにすることです。

杉田様、解説ありがとうございます。納得できました。

今後とも宜しくお願い致します。



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