RAISE DENTRO DE UM BLOCO EXCEPTION

PostgreSQL

26/01/2009

Bom dia!

Tenho uma trigger, e no fim dela tenho um ´EXCEPTION WHEN OTHERS´, porém quando tenho uma exceção manual RAISE EXCEPTION ´Erro direto!´, ai o postgresql é derrubado. Alguém já passou por isso?

Vejam um scrpit para testarem:

[color=green:45a790697d]
CREATE TABLE com_frete
(
id integer NOT NULL,
nome character varying(30),
CONSTRAINT com_frete_pk PRIMARY KEY (id)
) WITHOUT OIDS;


CREATE OR REPLACE FUNCTION tgf_com_frete_ok() RETURNS ´trigger´ AS $BODY$
BEGIN
IF (NEW.id = 5) THEN
RAISE EXCEPTION ´Código não pode ser 5.´;
END IF;
RETURN NEW;
EXCEPTION WHEN OTHERS THEN
RAISE EXCEPTION ´Erro gravando frete: ¬´, SQLERRM;
END;
$BODY$
LANGUAGE ´plpgsql´ VOLATILE;

CREATE TRIGGER tg_com_frete_ok AFTER INSERT ON com_frete
FOR EACH ROW EXECUTE PROCEDURE tgf_com_frete_ok();


INSERT INTO com_frete (id, nome) VALUES (5, ´Teste´); --AQUI A CONEXÃO É DERRUBADA.
[/color:45a790697d]

Qualquer dica será bem-vinda!

Obrigado.
Samuel Cunha


Samuel Cunha

Samuel Cunha

Curtidas 0
POSTAR