【问题标题】:PostgreSQL trigger before update更新前的 PostgreSQL 触发器
【发布时间】:2015-12-09 03:14:53
【问题描述】:

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

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();

错误信息是

错误:触发器函数不能有声明的参数提示: 触发器的参数可以通过 TG_NARGS 和 TG_ARGV 访问 反而。上下文:PL/pgSQL 函数“test_x”近行的编译 1

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    错误来自

    中声明的函数参数

    创建或替换函数 test_x(值整数)

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

    查看完整示例和解释 PL/PGSQL 触发器http://www.postgresql.org/docs/9.3/interactive/pltcl-trigger.html

    【讨论】:

    • 在这段代码中,我从另一台服务器获取数据。首先我从服务器获取数据,然后我检查传入的数据。如果数据的值长度小于 5 或​​为空,我想更改新值。我怎样才能做到这一点?以这种方式感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多