【发布时间】:2015-06-15 06:43:55
【问题描述】:
我编写了一个触发器函数,希望遍历 NEW 并检查其所有值。
CREATE OR REPLACE FUNCTION fix_nulls() RETURNS TRIGGER AS $_$
BEGIN
FOR val IN NEW
LOOP
IF val = '{x:Null}'
val := '';
ENDIF;
ENDLOOP;
RETURN NEW;
END $_$ LANGUAGE 'plpgsql';
CREATE TRIGGER prevent_nulls_siteinfo
BEFORE UPDATE OR INSERT ON siteinfo
FOR EACH ROW
EXECUTE PROCEDURE fix_nulls();
但我得到一个语法错误:
ERROR: syntax error at or near "NEW"
LINE 3: FOR val IN NEW
^
是否可以遍历NEW 中的所有值?我可以很容易地编写一堆 if 语句来检查每一列,但我希望这个函数是通用的,这样我以后可以将它用于其他表。
【问题讨论】:
标签: postgresql triggers plpgsql dynamic-sql