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
yOLD
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.