更新之前的PostgreSQL触发

时间:2015-12-08 14:44:18

标签: postgresql

当我尝试更新时,收到错误消息。任何帮助都非常感谢!

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

1 个答案:

答案 0 :(得分:0)

错误来自

中声明的函数参数
  

创建或替换功能test_x(值整数

触发器通常使用$ NEW和$ OLD关联数组,其中包含INSERT或UPDATE操作的新旧表行的值,或者对DELETE为空。

请参阅完整示例和说明PL / PGSQL触发器http://www.postgresql.org/docs/9.3/interactive/pltcl-trigger.html