MySQL: After Update Trigger soll feld in anderer Tabelle ändern

canju

Erfahrenes Mitglied
Hallo liebe Community,
ich probiere verzweifelt einen MySQL (MariaDB) After Update Trigger zu erstellen, der den Wert einer anderen Tabelle ändert.

Beispiel:
Ich habe 2 Tabellen.
Tabelle 1 (Hier liegt der Trigger drauf) als auch Tabelle 2 haben ein Feld status. Bei einem Update soll nun der t2.status in Tabelle 2 auf „FEHLGESCHLAGEN“ gesetzt werden, sobald der t1.status in Tabelle 1 auf „FAILED“ springt.

Mein trigger bisher:
SQL:
CREATE TRIGGER after_update
    AFTER UPDATE ON tabelle_1
    FOR EACH ROW BEGIN
   
BEGIN
    IF (NEW.status = 'FAILED')
    THEN
      UPDATE tabelle_2 AS t2
      SET t2.status = 'FEHLGESCHLAGEN',
    END IF;
END

Da ich den Trigger mit HeidiSQL erstelle (Rechtsklick auf Tabelle --> Neu erstellen --> Trigger) füge ich hier nur folgendes ein:

SQL:
BEGIN
    IF (NEW.status = 'FAILED')
    THEN
      UPDATE tabelle_2 AS t2
      SET t2.status = 'FEHLGESCHLAGEN',
    END IF;
END

Ich bekomme aber ständig die Fehlermeldung das ich einen Syntaxfehler nähe dem END IF; habe. Auch ohne Semikolon kommt der Fehler.
Ich habe auch schon probiert den UPDATE Befehl mit eine LEFT JOIN zu versehen. Hatte auch kein Erfolgt und dürfte eigtl. auch gar nicht notwendig sein oder?

Freue mich über jede Hilfe.

Beste Grüße,
Canju
 
Lösung
Der Fehler ist ein Stock höher.
Den Update mit einem ; abschliessen, nicht mit einem Komma, sonst denkt die DB noch, das END IF gehöre zum UPDATE.
SQL:
      UPDATE tabelle_2 AS t2
      SET t2.status = 'FEHLGESCHLAGEN';
Der Fehler ist ein Stock höher.
Den Update mit einem ; abschliessen, nicht mit einem Komma, sonst denkt die DB noch, das END IF gehöre zum UPDATE.
SQL:
      UPDATE tabelle_2 AS t2
      SET t2.status = 'FEHLGESCHLAGEN';
 
Lösung
Hey Yaslaw,

mal wieder vielen lieben Dank.
Das hat den Fehler behoben und der Trigger läuft einwandfrei.

Beste Grüße,
Canju
 
Zurück