Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/12/2010, 08:23
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

Delimitadores, delimitadores, delimitadores... Ya te lo dije en otra ocasión:
Código MySQL:
Ver original
  1. DELIMITER$$
  2. CREATE TRIGGER historial_usuarios AFTER UPDATE ON usuarios
  3.     IF (NEW.dinero IS NOT NULL OR NEW.dinero != 0) THEN
  4.         INSERT INTO hclientes(idusuario,anterio_dinero , nuevo_dinero, fecha)
  5.         VALUES (OLD.idusuario, OLD.dinero , NEW.dinero, NOW());
  6.     END IF;
  7. END$$
  8. DELIMITER ;

Respecto a esto:
Cita:
"cosa que puede darse si simplemente el UPDATE que ejecutes no incluye una cantidad nueva para el campo...."
piensalo de esta forma:
Cuando haces un UPDATE en el que no estás actualizando la totalidad de los campos de la tabla, los restantes, ¿existen o no para la pseudovariable NEW? La respuesta es SI, existen, pero no contienen valores o contienen NULL.
En tu caso, si te planteas que registre la transacción si lo que entra es diferente a lo que está, puede llegar a registrarse cuando envíes un UPDATE que afecte otros campos, pero no ese. Y creo que esa no es tu idea.
Por eso es conveniente que antes que controlar si son iguales, hay que verificar si el campo entrante contiene un valor legal y recién entonces verificar si los datos son diferentes.

¿Se entiende más?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)