Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/07/2013, 07:57
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Trigger actualización campo tras update

Hola pezcaditox:

Veo algunos problemas en tu TRIGGER:

1. Si entiendo bien, lo que pretendes es actualizar el campo fecha_acep de acuerdo a una condición... aquí el detalle que veo es que estás haciendo el TRIGGER DESPUÉS de hacer la actualización...

Hasta donde recuerdo, NO ES POSIBLE MODIFICAR EL OBJETO NEW en DESPUÉS DE QUE SE ACTUALIZÓ, porque esto implicaría volver a ejecutar el TRIGGER... desde mi punto de vista, en primer lugar, deberías cambiar el y lanzarlo ANTES DEL UPDATE, sino es posible que te marque un error

Código:
Error Code : 1362
Updating of NEW row is not allowed in after trigger
2. Las asignaciones de valores no se hacen con :=, las haces con SET.

http://dev.mysql.com/doc/refman/5.0/...-triggers.html

3. Las sentencias IF terminan con END IF

http://dev.mysql.com/doc/refman/5.0/...statement.html

Intenta hacer el TRIGGER ASI:

DELIMITER $$

Código MySQL:
Ver original
  1. CREATE TRIGGER O_trabajos_AU AFTER UPDATE ON O_trabajos FOR EACH ROW
  2.     IF (NEW.id_estado_trab != OLD.id_estado_trab) THEN
  3.        IF (OLD.fecha_acep IS NULL) THEN
  4.           IF  (NEW.id_estado_trab=9) || (NEW.id_estado_trab=10) || (NEW.id_estado_trab=11) THEN
  5.             SET NEW.fecha_acep = NOW();
  6.           END IF;
  7.        END IF;
  8.     END IF;
  9. END;$$
  10.  
  11. DELIMITER ;

La lógica de los IF's dependen de lo que quieres hacer... no sé si es la correcta o tengas que hacer alguna otra modificación.

Haz la prueba y nos comentas...

Saludos
Leo.