Eu tenho uma função de gatilho complexa que desejo dividir em várias subfunções. O gatilho chamaria a função master e a função master teria lógica para decidir qual subfunção chamar. Isso é até onde eu cheguei:
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();
O problema é que eu quero passar tudo new.*
para a segunda função de gatilho, não apenas algumas colunas. Em última análise, haveria lógica condicional dbo.tf1()
para decidir se ir dbo.tf2()
ou dbo.tf3()
etc.
Como posso fazer isso funcionar?
Estou usando o Postgres 12.8.
Dentro de um gatilho na tabela
thing
,NEW
é do tipo compostothing
que tem os mesmos nomes de atributo e tipos de dados que as colunas da tabela. Então,Violino .
Perguntas e respostas relacionadas sobre SO .