Hola a todos, a ver si alguien me puede dar una idea de como solucionar el siguiente problema: tengo un trigger before insert que si se cumple una determinada condición salta una excepción y también quiero que se meta en un campo del registro anterior (temporalmente hablando) un texto con el error.
Estoy probando de estas dos formas:
Código SQL
[-]begin
IF (condicion) THEN
BEGIN
EXCEPTION NOMBREEXCEPCION 'Texto de la excepción.';
UPDATE TABLA SET CAMPO1 = 'DESCRIPCIÓN DE LA EXCEPCIÓN' WHERE CAMPOCLAVE = 'DATO';
END
end
Código SQL
[-]begin
IF (condicion) THEN
BEGIN
EXCEPTION NOMBREEXCEPCION;
END
WHEN EXCEPTION NOMBREEXCEPCION DO
BEGIN
EXCEPTION NOMBREEXCEPCION 'Texto de la excepción.';
UPDATE TABLA SET CAMPO1 = 'DESCRIPCIÓN DE LA EXCEPCIÓN' WHERE CAMPOCLAVE = 'DATO';
END
end
y con las 2 me salta la excepción pero no me hace el update. ¿Automáticamente cuando hay una excepción se cancela todo lo que hace el trigger? Estoy usando Firebird 2.5