Boa tarde pessoal, tô precisando de uma ajuda, tenho uma trigger after
update for each row, e nessa trigger eu com base em vários testes posso dar
insert em outra tabela que tem um serial como chave, gostaria se saber se
existe uma maneira de eu “resgatar” o código da chave da segunda tabela no
próprio update, para exemplificar segue abaixo exemplo.

 

CREATE TABLE tab_a (

  campo1 INTEGER, 

  campo2 TEXT

) WITHOUT OIDS;

 

CREATE TABLE tab_b (

  campo3 serial, 

  campo4 TEXT

) WITHOUT OIDS;

 

insert into tab_a(campo1,campo2) values (1,'a');

insert into tab_a(campo1,campo2) values (2,'b');

insert into tab_a(campo1,campo2) values (3,'c');

insert into tab_a(campo1,campo2) values (4,'d');

 

CREATE FUNCTION fnc_tgr_tab_a_upd (

)

RETURNS trigger AS

$body$

DECLARE chave_tabb integer;

BEGIN

                insert into tab_b(campo4) values(new.campo1) returning
campo3 into chave_tabb;

               return new;

END;

$body$

LANGUAGE 'plpgsql'

VOLATILE

CALLED ON NULL INPUT

SECURITY INVOKER;

 

CREATE TRIGGER tab_a_tr

  AFTER UPDATE 

  ON public.tab_a FOR EACH ROW 

  EXECUTE PROCEDURE fnc_tgr_tab_a_upd();

  

update tab_a set campo2='z' where campo1=1

 

 

O que gostaria de fazer seria algo como:

update tab_a set campo2='z' where campo1=1 returning chave_tabb;

 

Tem como?

 

 

 


Cordialmente,
Felipe Rigotti
-------------------------------------------------------
 <mailto:fel...@sbsistemas.com.br> fel...@sbsistemas.com.br
------------------------------------------------------
SBsistemas
 <http://www.sbsistemas.com.br/> www.sbsistemas.com.br
 <mailto:sbsiste...@sbsistemas.com.br> sbsiste...@sbsistemas.com.br
(54) 3342-6666
 

  _____  

Esta mensagem, incluindo os seus anexos, contém informações confidenciais
destinadas a indivíduo e propósito específicos, e é protegida por lei. Caso
você não seja o citado indivíduo, deve apagar esta mensagem. É
terminantemente proibida a utilização, acesso, cópia ou divulgação não
autorizada das informações presentes nesta mensagem. As informações contidas
nesta mensagem e em seus anexos são de responsabilidade de seu autor, não
representando idéias, opiniões, pensamentos ou qualquer forma de
posicionamento por parte da SBsistemas. 

  _____  

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a