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
NEWpseudo filas solamente.
ACTUALIZAR ACTIVACIÓN
- Acceso al
NEWyOLDpseudo filas
ELIMINAR DISPARADOR
- Acceso solo a
OLDpseudo 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.