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
NEWpseudo-lignes uniquement.
DÉCLENCHEUR DE MISE À JOUR
- Accès au
NEWetOLDpseudo-lignes
SUPPRIMER LE DÉCLENCHEUR
- Accès uniquement à l'
OLDpseudo-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.