Hola a todos.
tengo un problema con un trigger y es el siguiente:
yo tengo una tabla A que tiene un trigger y necesito que ese disparador inserte en dos tablas distintas B y C. Coloco dos sentencias insert (una para cada tabla) en el mismo cuerpo del trigger y todo bien.
El problema es que tengo que tengo que prever que si ya existe esa llave en vez de insert haga un update para cualquiera de las dos, entonces si cada insert dispara una excepcion de tipo dup_val_on_index mando a realizar un update en el que la disparo.
Pero sintacticamente parece que en el cuerpo de un trigger no se puede tener dos captura de excepciones y me da error. 
Pongo un ejemplo para ilustrar:
 
CREATE TRIGGER Esquema.nombre 
AFTER INSERT 
ON Esquema.A
REFERENCING NEW AS NEW  
FOR EACH ROW
BEGIN
  INSERT INTO Esquema.B
     (B.b1,
      B.b2)
  VALUES(:NEW.ID,
         :NEW.Valor)
  EXCEPTION when dup_val_on_index THEN
    UPDATE Esquema.B
    SET (B.b2 = B.b2 + :NEW.Valor)
    WHERE (B.b1 = :NEW.ID)
 
  INSERT INTO Esquema.C
     (C.c1,
      C.c2)
  VALUES(:NEW.ID,
         :NEW.Valor)
  EXCEPTION when dup_val_on_index THEN
    UPDATE Esquema.C
    SET (C.c2 = C.c2 - :NEW.Valor)
    WHERE (C.c1 = :NEW.ID)
END;
 
El error me lo dice en el Exception del segundo insert y les cito el error:
PLS-00103: Encontrado o símbolo "EXCEPTION" quando um dos seguintes símbolos era esperado:
 
   begin case declare end exit for goto if loop mod null pragma
   raise return select update when while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge
   <a single-quoted SQL string> pipe
 (Line: 113   Col:   6)
 
 
Alguna sugerencia?
muchas gracias y saludos a todos. 
   
 



