【发布时间】:2019-05-14 19:51:20
【问题描述】:
如何在 PostgresSQL 中为多个模式和表创建触发器函数。
我需要一个函数用于多个表和模式。
我正在尝试下面的代码。
功能:
CREATE OR REPLACE FUNCTION public.update_modifiedUser(pSchemaName text, pTableName text)
RETURNS trigger AS
$BODY$
DECLARE
vUserid numeric;
BEGIN
select t.userid into vUserid from public.user_login_details t where inet (t.systemid) = inet_client_addr() order by t.id desc limit 1;
UPDATE pSchemaName||.||pTableName SET modified_user = vUserid ,modified_date = now() WHERE ID = NEW.ID;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
触发器:
CREATE TRIGGER trg_modUser_aerial
BEFORE UPDATE OF geom
ON sandiego.aerial
FOR EACH ROW
EXECUTE PROCEDURE public.update_modifiedUser('sandiego','aerial');
运行该函数时出现此错误:
错误:触发器函数不能有声明的参数
提示:触发器的参数可以通过 TG_NARGS 访问 和 TG_ARGV。
CONTEXT:PL/pgSQL 函数“update_modifieduser”的编译附近 第 1 行
让我知道我的功能有什么变化
【问题讨论】:
标签: sql postgresql plpgsql database-trigger