[pgsql-jp: 36918] Re: ON UPDATEルール中でのUPDATE

catsmoon fortuna catsmoon @ circus.ocn.ne.jp
2006年 3月 23日 (木) 20:07:38 JST


こんばんは、FORTUNAです。

Shuji TANAKA wrote:
> INSERT INTO t_test VALUES ( 1, null );
> UPDATE t_test SET test_id = 2;
> 
>  次のようなエラーが返ります.
> 
> ERROR:  query rewritten 100 times, may contain cycles
> 
>  何も考えずにUPDATE文をON UPDATEルール中で使用したときに,上記と同様のエラー
> で実現できなかったので,
そのテーブル自身に対するupdate文をルールにした場合
永遠にupdateが発生するからですね。


>  また,pg_classのrelhasrulesカラムをON/OFFするのではなく,pg_rewriteテーブル
> のev_classカラムを一時的にnullにすることも試してみたのですが,いずれもpsqlのコ
> マンドラインから実行した場合はうまく動作してくれるのですが,ルール定義中に含め
> てしまった場合は上記のようにエラーが発生しました.
トランザクション内部で実行しているからと予想します。
コマンドラインからもトランザクションを明示すればエラーが発生しませんか?



-- 
FORTUNA



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