当我尝试更新时,收到错误消息。任何帮助都非常感谢!
CREATE OR REPLACE FUNCTION test_x(value integer)
RETURNS trigger AS
$BODY$
DECLARE
BEGIN
update backups.scrap_v16_sah_mil_hur_bak set value = '-99' where scrap_durum =1 and ( char_length(value) < 5 or value= '' or value is null or value like '%Belir%' );
RETURN value;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION test_x(value)
OWNER TO postgres;
GRANT EXECUTE ON FUNCTION backups.scrap_v16_sah_mil_hur_bak(value) TO public;
GRANT EXECUTE ON FUNCTION backups.scrap_v16_sah_mil_hur_bak(value) TO postgres;
CREATE TRIGGER test_x
BEFORE UPDATE
ON backups.scrap_v16_sah_mil_hur_bak
FOR EACH ROW
EXECUTE PROCEDURE test_x();
错误消息是
错误:触发器函数不能声明参数HINT:The 可以通过TG_NARGS和TG_ARGV访问触发器的参数 代替。背景:PL / pgSQL函数的编译&#34; test_x&#34;近线 1
答案 0 :(得分:0)
错误来自
中声明的函数参数创建或替换功能test_x(值整数)
触发器通常使用$ NEW和$ OLD关联数组,其中包含INSERT或UPDATE操作的新旧表行的值,或者对DELETE为空。
请参阅完整示例和说明PL / PGSQL触发器http://www.postgresql.org/docs/9.3/interactive/pltcl-trigger.html