Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/12/2010, 07:22
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: Duda con triggers

No exactamente, porque los campos llegan aunque no los invoques en el UPDATE, ya que forman parte de la estructura de la tabla. En esencia, ese modelo podría ejecutarse si, por ejemplo, NEW.dinero fuese igual a cero y OLD.dinero no, cosa que puede darse si simplemente el UPDATE que ejecutes no incluye una cantidad nueva para el campo....

Recuerda que en un TRIGGER, el registro entrante es una estructura completa, con todos sus campos, aún aquellos que no uses para enviar valores, porque lo que hace MySQL es crear un registro entero y luego asignar sólo los campos indicados en la sentencia... pero los demás siguen existiendo.

¿Se entiende la idea?

Probablemente algo parecido a esto funcione mejor:

Código MySQL:
Ver original
  1. CREATE TRIGGER historial_usuarios AFTER UPDATE ON usuarios
  2.     IF (NEW.dinero IS NOT NULL OR NEW.dinero != 0) THEN
  3.         INSERT INTO hclientes(idusuario,anterio_dinero , nuevo_dinero, fecha)
  4.         VALUES (OLD.idusuario, OLD.dinero , NEW.dinero, NOW());
  5.     END IF;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)