Dans un UPDATE TRIGGER
, vous pouvez utiliser le OLD
mot-clé pour accéder aux données de ligne qui sont remplacées par la mise à jour. Le NEW
Le mot-clé permet d'accéder aux données de ligne entrantes qui remplaceront l'ancienne ligne, en cas de succès.
Un exemple de UPDATE
le déclencheur est :
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 ici
Selon le type de déclencheur créé, le OLD
et NEW
les lignes peuvent ne pas être disponibles :
INSÉRER LE DÉCLENCHEUR
- Accès au
NEW
pseudo-lignes uniquement.
DÉCLENCHEUR DE MISE À JOUR
- Accès au
NEW
etOLD
pseudo-lignes
SUPPRIMER LE DÉCLENCHEUR
- Accès uniquement à l'
OLD
pseudo-lignes
c'est-à-dire qu'il n'y a pas de OLD
ligne sur un INSERT
déclencheur, et pas de NEW
ligne sur un DELETE
déclencheur.
Question du PO
OP n'a pas fourni le code réel et le message d'erreur mentionné dans les commentaires :
indique que l'OP a créé par inadvertance un INSERT TRIGGER
et non un UPDATE TRIGGER
comme indiqué dans la question. Un INSERT
le déclencheur n'a pas de OLD
pseudo-table.