Opa, Tiago tudo bem?
Esse script é para apenas demonstrar o comportamento. A busca do ID para
gravação é para testar a busca, mas não tem relação com qualquer sistema
real.
Obrigado, e vou ter que alterar realmente as triggers.
Abraço!



*José  Henrique Beraldo*
Tel: 017 3331-7770
Cel: 017 99979-4669

*Linkedin   **linkedin.com/in/josehenriqueberaldo
<http://www.linkedin.com/in/josehenriqueberaldo>*

*Twitter      @henriqueberaldo*

*Facebook facebook.com/henriqueberaldo
<http://facebook.com/henriqueberaldo>*

*Skype        josehenriqueberaldo*




Em 19 de novembro de 2015 19:45, Tiago José Adami <adam...@gmail.com>
escreveu:

> Em 18 de novembro de 2015 22:24, José Henrique Beraldo
> <henriquebera...@gmail.com> escreveu:
> >
> > Opa Tiago, boa noite. Desculpe não retornar antes.
>
> Olá José. Descartei o código anterior para diminuir a resposta.
>
> No código que você enviou não justifica o uso do campo
> "tf_confirmacao_trigger_pai_id". Da forma como está, o trigger da
> tabela filha sempre irá gravar o valor inserido na pk da tabela pai, e
> tanto "tf_confirmacao_trigger_pai_id" quanto "tf_tb_id" terão os
> mesmos valores.
>
> Eu não entendi qual a motivação ou a regra por detrás de tudo isto,
> mas parece ser um erro grosseiro de projeto. Seria interessante
> revisar esta parte do modelo. Mas como provavelmente trata-se de um
> software legado, nem vamos discutir este ponto pois talvez não seja
> possível mudar muita coisa - já me deparei muito com casos assim.
>
> Sobre o comportamento descrito na versão 7.4 possivelmente era um bug
> e foi corrigido. Não faz muito sentido o campo auto-incremento
> recuperar o valor da sequência em NEW antes do registro ser inserido
> (BEFORE INSERT). Tanto que para fazer funcionar o seu código,
> inserindo o valor "tf_confirmacao_trigger_pai_id" na tabela filha com
> o mesmo valor da chave primária da tabela pai, basta alterar o trigger
> da tabela pai para AFTER INSERT:
>
> CREATE TRIGGER tab_pai_tr
>   AFTER INSERT
>   ON qion.tab_pai FOR EACH ROW
>   EXECUTE PROCEDURE public.f_tab_pai();
>
> Outra coisa: a menos que você queira fazer um teste para verificar se
> o valor é nulo e abortar a transação, utilize RAISE NOTICE ao invés de
> RAISE EXCEPTION.
>
> RAISE NOTICE 'rRecord.tp_id % tp_data %',rRecord.tp_id,rrecord.tp_data;
>
>
> --
> TIAGO J. ADAMI
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a