El problema que tienes es que el TRIGGER no te va a devolver ninguna información sobre eso, por dos razones:
Una: No están pensados para generar información de salida, sino para resolver tareas a realizarse en esos eventos.
Dos: Si lo hicieren, solamente obtendrías la información cuando el cambio ya se realizó y no antes de hacerse. Lo de BEFORE se refiere a tareas a realizar cuando ya se está ejecutando la sentencia pero aún no se completó la tarea. Pero no impide hacerla. No confirma.
Lo único que puedes hacer es resolver algo respecto a si un campo entrante va a hacer algo si es diferente al valor que ya está. Una posibilidad es cargar una variable de usuario, pero estas variables existen en el entorno de la sesión y mueren al cerrarse la conexión a donde se crearon.
Algo así:
Código SQL:
Ver originalDROP TRIGGER IF EXISTS VERIFICAR_ACTUALIZACION;
DELIMITER $$
CREATE TRIGGER VERIFICAR_ACTUALIZACION BEFORE UPDATE
ON TABLA1 FOR EACH ROW
BEGIN
IF NEW.CAMPO1 != OLD.CAMPO1 THEN
SET @INFO = 'SE HA PRODUCIDO UN CAMBIO EN EL CAMPO1';
ELSE
SET @INFO = 'SIN CAMBIOS';
END IF;
END$$
DELIMITER ;
Si no se lee esta variable antes de la siguiente actualización, el valor de detección de un cambio se pierde. También se pierde si la conexión es cerrada, como por ejemplo, al usar Navicat, PhpMyAdmin o MyQSLQueryBrowser, ya que en estos tres cada consulta abre y cierra una sesión.
Cualquier otra validación previa al UPDATE se debe hacer en la aplicación y no en la base.