トリガを実行したときに、処理部分のfunctionで更新されたデータの値を取得したいと考えております。
NEW変数を使い、
NEW.[フィールド名]とすれば取得できるのは知っているのですが、
この[フィールド名]にfunction内で取得した項目名を指定するにはどうしたら良いのでしょうか?
仮に取得したいフィールド名が「sample_id」だった場合、
functionの中でNEW.sample_idとすれば取得できます。
が、今回考えていたのは以下のような処理の場合です。
記述イメージなので間違っているかもしれませんが、、、
begin
for rec in SELECT att.attname
FROM pg_attribute as att
INNER JOIN pg_class as class ON class.oid = att.attrelid
WHERE att.attnum > 0
AND class.relname='テーブル名'
ORDER BY att.attnum
loop
insert into 'テーブル名2' values(NEW.rec.attname);
loop end
end;
ループでテーブル内の項目を取得し、取得した項目の値をテーブル名に入れるという処理です。
rec.attnameには「sample_id」と入っていたので、NEW.rec.sample_idとしたのですが、
実行したときにエラーになり、どうしてもinsertできません。
どうにかして、sample_idの値をinsertしたいのですがわかりません。
ご教授お願い致します。
お礼
なるほどー。 明日になりますが、ためしてみます! ありがとうございます。 結果わかったら教えます!