如何在PostgresSQL中为多个模式和表创建触发器函数
如何在PostgresSQL中为多个模式和表创建触发器函数 我需要一个用于多个表和模式的函数 我正在尝试下面的代码 功能:如何在PostgresSQL中为多个模式和表创建触发器函数,sql,postgresql,plpgsql,database-trigger,Sql,Postgresql,Plpgsql,Database Trigger,如何在PostgresSQL中为多个模式和表创建触发器函数 我需要一个用于多个表和模式的函数 我正在尝试下面的代码 功能: CREATE OR REPLACE FUNCTION public.update_modifiedUser(pSchemaName text, pTableName text) RETURNS trigger AS $BODY$ DECLARE vUserid numeric; BEGIN select
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
上下文:PL/pgSQL函数“update_modifieduser”的编译
第1行
让我知道我的函数中的任何更改我在你的位置将
在函数体中适当地设置搜索路径
,这样你就不需要对函数中的对象进行模式限定,也可以在没有太多动态SQL的情况下工作
您可以从TG\u table\u schema
变量中获取表的架构,也可以将其作为参数传递给CREATE trigger
中的trigger函数,并从TG\u ARGV[]读取它
请参阅。副本