sql >> Base de Datos >  >> RDS >> Mysql

Obtenga el valor ANTIGUO en MySQL Trigger DESPUÉS de la declaración de actualización

En un UPDATE TRIGGER , puede usar el OLD palabra clave para acceder a los datos de la fila que está siendo reemplazada por la actualización. El NEW La palabra clave permite acceder a los datos de la fila entrante que reemplazará la fila anterior, si tiene éxito.

Un ejemplo de una UPDATE desencadenante es:

CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
    FOR EACH ROW
    BEGIN
       IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
         INSERT INTO AuditSomeTable(ID, LastChangedBy) 
         VALUES (OLD.ID, OLD.LastChangedBy);
       END IF;
    END;

SQLFiddle aquí

Según el tipo de disparador creado, el OLD y NEW Es posible que las filas no estén disponibles para usted:

INSERTAR DISPARADOR

  • Acceso al NEW pseudo filas solamente.

ACTUALIZAR ACTIVACIÓN

  • Acceso al NEW y OLD pseudo filas

ELIMINAR DISPARADOR

  • Acceso solo a OLD pseudo filas

es decir, no hay OLD fila en un INSERT activador, y sin NEW fila en un DELETE disparador.

Pregunta de OP

OP no ha proporcionado el código real y el mensaje de error al que se hace referencia en los comentarios:

indica que el OP había creado inadvertidamente un INSERT TRIGGER y no un UPDATE TRIGGER como se indica en la pregunta. Un INSERT el disparador no tiene OLD pseudo tabla.