我有一个复杂的触发功能,我希望将其分解为多个子功能。触发器将调用主函数,而主函数中将包含逻辑来决定调用哪个子函数。这是据我所知:
create table dbo.thing (thingid int);
create table dbo.thingtwo (thingid int);
create or replace function dbo.tf2(thingid int) returns void as $$
insert into dbo.thingtwo values (thingid);
$$ language sql;
create or replace function dbo.tf1() returns trigger as $thinginsert$
begin
perform dbo.tf2(new.thingid);
return null;
end;
$thinginsert$ language plpgsql;
create trigger thinginsert
after insert on dbo.thing
for each row execute procedure dbo.tf1();
问题是我想将整个传递给new.*
第二个触发函数,而不仅仅是一些列。最终会有条件逻辑dbo.tf1()
来决定是否去dbo.tf2()
等等dbo.tf3()
。
我怎样才能使这项工作?
我正在使用 Postgres 12.8。
在 table 上的触发器内部
thing
,是具有与 table 列相同的属性名称和数据类型NEW
的复合类型。thing
所以,小提琴。
关于 SO 的相关问答。