2016-07-26 13:29 GMT-03:00 Felipe Rigotti [SBSistemas] <
[email protected]>:

> 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
>

Você quer alterar na própria linha que foi atualizada, certo?

Se sim, ao invés de usar AFTER, use BEFORE e faça:


    insert into tab_b(campo4) values(new.campo1) returning campo3 into
chave_tabb;
    new.campos2 := chave_tabb;
    return new;

At.
-- 
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a