Delimitadores, delimitadores, 
delimitadores... Ya te lo dije en otra ocasión:   
Código MySQL:
Ver original- DELIMITER$$ 
-         INSERT INTO-  hclientes (- idusuario ,- anterio_dinero  ,-  nuevo_dinero ,-  fecha )
 
-         VALUES (- OLD.idusuario ,-  OLD.dinero  ,-  NEW.dinero , NOW());
 
- 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?