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

Akinori FUJII showten24 @ yahoo.co.jp
2004年 5月 18日 (火) 20:00:53 JST


藤井です。

また質問があります。
PostgreSQL 7.3.4 にてPL/pgSQLのファンクションを作成しています。

INSERTする際、条件によってNEWもしくはOLDを使い分けたいと考えています。

INSERT文は以下のように記述しておき、NEWもしくはOLDをrecと名乗らせる
ことで、INSERT文をひとつにしたいと考えています。
INSERT INTO table_name ( pk, a, b, c ) 
VALUES ( rec.pk, rec.a, rec.b, rec.c ) ;

以下のような文を試してみたのですが、どれもエラーになってしまいました。
A) RENAME NEW TO rec ;
   WARNING:  plpgsql: ERROR during compile of func_name near line n

B) rec ALIAS FOR NEW ;
   WARNING:  Error occurred while executing PL/pgSQL function func_name
   WARNING:  line n at SQL statement

C) DECLARE rec RECORD; BEGIN rec := NEW ;
   WARNING:  plpgsql: ERROR during compile of func_name near line n

D) DECLARE rec RECORD; BEGIN rec := NEW.* ;
   WARNING:  plpgsql: ERROR during compile of func_name near line n

E) SELECT INTO rec * FROM NEW ;
   WARNING:  Error occurred while executing PL/pgSQL function func_name
   WARNING:  line n at select into variables

以下のマニュアルを参考にしました。
PostgreSQL 7.3.4 プログラマガイド
Chapter 19. PL/pgSQL - SQL 手続き言語
19.3. 宣言

以上、ご存知の方がいらっしゃいましたらご教授いただけないでしょうか。

藤井




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