[pgsql-jp: 32976] Re: NEW もしくは OLD に別名を与える方法は?

Jun Kitamura kitamura @ zoozee.jp
2004年 5月 20日 (木) 00:31:05 JST


北村です。

> INSERT文は以下のように記述しておき、NEWもしくはOLDをrecと名乗らせる
> ことで、INSERT文をひとつにしたいと考えています。
> INSERT INTO table_name ( pk, a, b, c ) 
> VALUES ( rec.pk, rec.a, rec.b, rec.c ) ;
> 
> 以下のような文を試してみたのですが、どれもエラーになってしまいました。
(略)
> E) SELECT INTO rec * FROM NEW ;
>    WARNING:  Error occurred while executing PL/pgSQL function func_name
>    WARNING:  line n at select into variables

SELECT NEW.* into rec;
で出来ませんか?
rec は RECORD型にしてあるかと思いますので、後は「入れ方」の
問題だと思います。
試してないので恐縮ですが、上記の方法で可能だと思います。

なんとなく、
C) の rec := NEW; で可能な感じがしますが、RECORD型は宣言時に
型が決定していないので、明示的に SELECT (class) INTO (RECORD)
してやる必要があります(と「勝手に」解釈しています。ので間違
いの場合あり)。




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