Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/10/2014, 16:30
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, 4 meses
Puntos: 2658
Respuesta: Trigger Porfavor necesito su colaboracion PLISSS

Cita:
Iniciado por andres18281 Ver Mensaje
Cordial Saludo, intento implementar este trigger donde compare si la fecha inicio es menor a la fecha final (en esta db tiene dos campos fechas) entonces inserte la fecha actual (curdate())
en el caso que la fecha final sea mayor que la actual entonces inserte igualmente la actual.

No le veo como mayor dificultad pero al implementar este trigger simplemente no permite
insertar en cualquiera de estos dos casos, por el contrario si no estan dentro de estos casos
si lo hace. Quien me podria dar una mano en esto ?

Código MySQL:
Ver original
  1. DELIMITER //
  2. CREATE TRIGGER insert_fecha_fina_trigger
  3. BEFORE INSERT ON cargoxempleado FOR EACH ROW
  4.     IF NEW.fecha_final > CURDATE() THEN
  5.         INSERT INTO cargoxempleado VALUES(NEW.codEmpleado,NEW.codCargo,NEW.codDepartamento,NEW.salario,NEW.fecha_inicio,CURDATE());
  6.     ELSEIF NEW.fecha_final < NEW.fecha_inicio THEN
  7.         INSERT INTO cargoxempleado VALUES(NEW.codEmpleado,NEW.codCargo,NEW.codDepartamento,NEW.salario,NEW.fecha_inicio,CURDATE());
  8.     END IF;  
  9. //
No puedes realizar operaciones DML sobre la misma tabla que dispara el trigger.
Si lo piensas, estás intentando hacer un INSERT en un TRIGGER sobre una tabla en la cual se está ejecutando ese mismo TRIGGER, y para el mismo evento, lo que dispararía otra vez el TRIGGER...
Si pudiese ejecutarse se produciría un loop infinito.

Lo que tienes que hacer es modificar el dato del campo correspondiente en el NEW, en base a la condición.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)