Fórum RAISE DENTRO DE UM BLOCO EXCEPTION #27036
26/01/2009
0
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
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)