[pgsql-jp: 28218] Re: トリガファンクションのカラム名を変数で使いたい

Mashiki mashiki @ yanah.com
2002年 12月 7日 (土) 21:56:49 JST


 Mashikiです。

遅いレスですが...

>plpgsqlでトリガファンクションを作っています。
>
>このとき
> new.カラム名 old.カラム名
>としてデータを取得しようとしています。
>このカラム名を変数で指定したいのですが、そういうことは出来るのでしょうか?
>
>例えばカラム名がcolというテキスト型の変数に入っている場合
>下記のようにしてみたのですがダメでした。
>
>例1
>UPDATE test_table SET old_data = old.col;
>--colというカラム名はないというエラーになりました。
>
>例2
>EXECUTE 
>''UPDATE test_table SET old_data = old.'' || quote_ident(col);
>--oldの使い方が違うみたいなエラーになりました。
>マニュアルによれば、これらの、OLDやNEWは「特殊な変数」と書かれているので
>''''内では使えないということでしょうか。
>
>変数に入ったテキスト型のカラム名を認識させるには
>どうしたらよいのでしょうか?
>よろしくお願いいたします。

これ私も試してみましたがExecuteの中ではうまくいかないようですね。
colの値を「old.カラム名」としたり、oldもquote_itent()したりとか
色々試してみましたが、executeで実行するSQLでは使えないようです。

カラム名を変数で指定して、何を行いたかったのかを書いてみれば、
別の切り口からアドバイスをもらえる事と思います。

# 複数のトリガーで1つのファンクションを共有したい
# 具体的には.....
# とか



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