2016-05-17 13 views
0

Ich versuche, einen Auslöser zu schaffen, die das Feld geändert wurde api_key_modified in der Tabelle wp_users, wenn ein Eintrag in der Tabelle wp_bp_xprofile_data mit den field_id106 modifiziert. Der Eintrag sollte nur für denselben Benutzer aktualisiert werden.MySQL-Trigger mit IF-Anweisung Rückkehr # 1064

Dies ist mein Code:

CREATE TRIGGER trigger_api_key_update AFTER UPDATE ON wp_bp_xprofile_data 
FOR EACH ROW 
    IF new.field_id = 106 THEN 
     UPDATE wp_users SET api_key_modified = 1 WHERE id = new.user_id; 
    END IF; 

Und als Ergebnis erhalte ich:

1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung> Ihre MySQL-Server-Version für die richtige Syntax ‚zu verwenden, in der Nähe von‘ in Zeile 4

Der Code funktioniert, wenn ich lösche Sie die IF-Anweisung entspricht - aber dann wird es aktualisieren, um die Daten für alle Änderungen nicht nur an denen mit field_id 106.

Antwort

1

Sie müssen das Trennzeichen ändern. Ansonsten endet die Definition in den ersten ; die es

delimiter | 
CREATE TRIGGER trigger_api_key_update AFTER UPDATE ON wp_bp_xprofile_data 
FOR EACH ROW BEGIN 
    IF new.field_id = 106 THEN 
     UPDATE wp_users SET api_key_modified = 1 WHERE id = new.user_id; 
    END IF; 
END 
| 
delimiter ; 

Ohne die if der Code funktioniert unvollständig machen würde, weil es mit nur einem ; am Ende eine einzige Aussage.

+0

Ich versuchte es mit Trennzeichen, die ich aus anderen Posts gesehen habe, tat das gleiche wie Sie mir mit $$ gezeigt, aber es hat nicht funktioniert. Aber deins, also wirklich danke !! – BlackOutDev