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.

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a