你可以做类似的事情:
foreach m slice 1 IN array NEW.*
loop
RAISE NOTICE 'var: %', m;
END LOOP;
,或者
FOR i IN NEW LOOP
RAISE NOTICE 'var: %', i;
END LOOP
答案 0 :(得分:4)
NEW
and OLD
are special record variables。你不能像通过数组一样遍历它们。
循环遍历(众所周知的)记录或行的列的一种方法:转换为json
或jsonb
,然后:
CREATE OR REPLACE FUNCTION foo()
RETURNS trigger AS
$BODY$
DECLARE
js jsonb := to_jsonb(NEW);
col text;
BEGIN
FOR col IN SELECT * FROM jsonb_object_keys(js)
LOOP
RAISE NOTICE '%: %', col, js->>col;
END LOOP;
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql VOLATILE;