Postgresql
postgresql 觸發器 –> 觸發器函式 –> 子觸發器函式鏈
我有一個複雜的觸發功能,我希望將其分解為多個子功能。觸發器將呼叫主函式,而主函式中將包含邏輯來決定呼叫哪個子函式。這是據我所知:
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
所以,create or replace function dbo.tf2(thing_row thing) returns void as $$ insert into dbo.thingtwo values (thing_row.thingid); $$ language sql; create or replace function dbo.tf1() returns trigger as $thinginsert$ begin perform dbo.tf2(new); return null; end; $thinginsert$ language plpgsql;
小提琴。