我必须使用触发器来记录数据库中的删除。登录表与原始表相同,外加日期和时间字段。
所有表的操作都相同,除了记录该表的表名
begin
insert into log.table_name
select old.*, now();
return old;
end
我想将表名作为参数。但是,那当然不行
begin
insert into TG_ARGV[0]
select old.*, now();
return old;
end
要使用此功能,您需要输入一个字符串
begin
execute format('insert into %L '
'select old.*, now()', TG_ARGV[0]);
return old;
end
但是由于使用了OLD.*
我的问题是,有没有一种方法可以将表名作为参数并保持对old
的调用。很明显,我可以使用CASE
,但是我不想这样做,因为触发函数将变得非常大,将来将很难维护。