[pgsql-jp: 40739] トリガーファンクション?で実現可能でしょうか?

yukihito miso oira3ryu @ gmail.com
2011年 4月 18日 (月) 21:36:30 JST


トリガーファンクション?というのでしょうか?

id sec col cat
-------------------
 1   1  1c   1
 2   2  2c   1
 3   1  4c  11
 4   2  8c  11
 5   3 12c  11

上記のテーブルでcatが11の場合

イメージですが
merge_col := 1c, 2c, 3c
ということをしたい。

ためしに、

CREATE OR REPLACE FUNCTION merge_col()
  RETURNS trigger AS
$BODY$
  DECLARE
    cnt int;
BEGIN
  PERFORM COUNT(col) AS cnt FROM tableA WHERE cat = NEW.cat;

FOR i IN 1..cnt LOOP
  SELECT col FROM tableA WHERE sec = i AND cat = NEW.cat;
  NEW.merge_col := col;
  RETURN NEW;
END LOOP;
  NEW.merge_col := merge_col;
  RETURN NEW;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION merge_col() OWNER TO yu2admin;

としてみましたが
「upper bound FOR of loop cannot be null」
というエラーが出てしまいます。

どなたかご指導お願いします。


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