MySQL-Trigger und On DUPLICATE KEY
-
Hallo,
kann es sein, dass ON DUPLICATE KEY nicht innerhalb von Triggern funktioniert?
Folgendes Szenario macht keine Probleme und funktioniert tadellos:DELIMITER // CREATE TRIGGER trg_update AFTER UPDATE on t1 FOR EACH ROW BEGIN UPDATE t2 SET t2.Wert=NEW.Wert WHERE t2.Artikelnummer=NEW.Artikelnummer; END; // DELIMITER ;
Jenes hingegen funktioniert nicht und wird mit nachfolgender Fehlermeldung abgebrochen:
DELIMITER // CREATE TRIGGER trg_update AFTER UPDATE on t1 FOR EACH ROW BEGIN INSERT INTO t2 (t2.Wert, t2.Artikelnummer) VALUES (NEW.Wert, NEW.Artikelnummer) ON DUPLICATE KEY UPDATE t2 SET t2.Wert=NEW.Wert WHERE t2.Artikelnummer=NEW.Artikelnummer; END; // DELIMITER ;
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET t2.Langbeschreibung=NEW.Wert
WHERE t2.Ar' at line 8Ich kann mir den Fehler nicht erklären?! Ohne die INSERT-Geschichte funktioniert es wie gesagt problemlos.
Ich hoffe ihr könnt mir helfen.
VlG
-
Nochmal Hallo,
Mein Fehler: Bei ON DUPLICATE KEY UPDATE, schreibt man natürlich nicht nochmal die Tabelle dahinter und WHERE ist überflüssig.
Korrekt wäre es also so:
DELIMITER // CREATE TRIGGER trg_update AFTER UPDATE on t1 FOR EACH ROW BEGIN INSERT INTO t2 (t2.Wert, t2.Artikelnummer) VALUES (NEW.Wert, NEW.Artikelnummer) ON DUPLICATE KEY UPDATE t2.Wert=NEW.Wert; END; // DELIMITER ;
VlG