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 8

    Ich 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


Log in to reply