Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/08/2013, 05:47
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error de sintaxis handlers

Ese no es el sentido de un SQLEXCEPTION.
En tu escenario, lo que podría ser es que no se encuentre el resultado del SELECT, pero eso no es una SQLEXCETION, sino un SQLWARNING, que no es lo mismo.
Lee el manual de referencia.

En cualquier caso, ni siquiera lo necesitarías, porque bien podrías hacer:
Código MySQL:
Ver original
  1.    DECLARE V_DEPTNO INT;
  2.    SET V_DEPNO = 0;
  3.    SELECT DEPTNO INTO V_DEPTNO FROM AUX_DEPT WHERE DEPTNO=NEW.DEPT_NO;
  4.    IF VDEPTNO IS NULL THEN
  5.        INSERT INTO AUX_DEPT VALUES (NEW.DEPT_NO, NULL, NULL);
  6.    END IF;
Pero si quieres, hazlo así:
Código MySQL:
Ver original
  1.    DECLARE V_DEPTNO INT;
  2.    DECLARE EXIT HANDLER FOR SQLEXCEPTION INSERT INTO AUX_DEPT VALUES (NEW.DEPT_NO, NULL, NULL);
  3.    SELECT DEPTNO INTO V_DEPTNO FROM AUX_DEPT WHERE DEPTNO=NEW.DEPT_NO;
  4.  

En cualquier caso, te advierto que si lo que deseas hacer es insertar un nuevo departamento en caso de no existir en su tabla, y este trigger es para una tabla donde ese ID es FK, este trigger no funcionará, porque la validación de la restricción FK se dispara antes que el TRIGGER.
Y si, en todo caso, estás haciendo un trigger sobre la propia tabla donde está definido, tampoco funcionará.
Te comento que usar triggers para este tipo de cosas es una muy mala idea. Es mejor poner la lógica de validaciones de esta clase en un procedure que realice todas las validaciones y acciones necesarias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)