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