Em 24 de novembro de 2015 11:56, Danilo Silva <danilo.dsg.go...@gmail.com> escreveu:
> > > Em 24 de novembro de 2015 11:50, Flavio Henrique Araque Gurgel < > fha...@gmail.com> escreveu: > >> Pessoal, >>> >>> Dentro de uma função que retorna uma trigger, é possível efetuar um >>> insert antes de um raise exception? >>> >>> Por exemplo >>> >>> IF condicao THEN >>> INSERT tabela_log... >>> RAISE EXCEPTION ''; >>> RETURN NULL; >>> END IF; >>> RETURN NEW; >>> >>> A intenção é gravar em uma tabela de log a tentativa de insert. >>> >> >> Quando você faz o RAISE EXCEPTION o que você faz é justamente... uma >> exceção. Logo, um rollback é feito obrigatoriamente. >> >> Para fazer o que você quer, tem que tratar a exceção, um bloco assim no >> fim da função pode te ajudar: >> EXCEPTION >> WHEN unique_violation THEN >> INSERT INTO tabela_log... ; >> RETURN outro_valor; >> END; >> >> Lembre-se de tratar seu RETURN na chamada da função, porque você *não* >> terá tratamento do rollback de outros comandos numa mesma transação, neste >> caso. >> > Fiz um teste conforme indicado, mas a dúvida pairou sobre o RETURN pois como é para trigger, então o return da chamada da função é um TRIGGER, então minha função ficou assim: EXCEPTION WHEN OTHERS THEN INSERT INTO tabela_log...; RETURN NULL; END; Até aqui beleza, mas a questão é que preciso mostrar a exceção na tela da aplicação, pois do jeito que fiz e mostrei aqui, quando faço o insert, a aplicação entende que a instrução deu certo (apesar de retornar 0 linhas afetadas, porém sem erros). []s Danilo
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral