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.
>
> ​Legal Flavio, vou testar, obrigado.

[]s
Danilo​
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a