2016-04-23 7 views
1

Ich versuche, einen Trigger zu erstellen, der in eine Tabelle einfügt, nachdem ein boolesches Feld verifiziert worden ist. Hier ist mein Code:Das Erstellen eines Triggers in PhpMyAdmin verursacht einen Syntaxfehler

DROP TRIGGER IF EXISTS user_au_trg; 

DELIMITER $$ 
CREATE OR REPLACE TRIGGER user_au_trg 
    AFTER UPDATE ON users 
    FOR EACH ROW 
    BEGIN 
    IF NEW.UserNameVerified = '1' 
    INSERT INTO changeLog(logId,userId,logDate, theLog) VALUES (null, new.UserId, NOW(), 'User Has Now Been Verified') 
    END IF 
    END $$ 
DELIMITER ; 

Jedes Mal, wenn ich versuche, dies zu laufen, bekomme ich einen Syntaxfehler:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO changeLog(logId,userId,logDate, theLog) VALUES (null, new.UserId, NO' at line 6

Was mache ich falsch, dass die Ursache dieser Fehler?

Antwort

1

Es gibt ein paar Anpassungen, die ich machen würde einige sind nur persönliche Vorlieben. Der Code ist unten veröffentlicht. Doch die wichtigsten Fragen waren:

  1. Eine fehlerhafte IF-Anweisung es sein muss -

    IF [Ausdruck] DANN [IF TRUE] ELSE [IF FALSE].

  2. Fehlende Terminatoren nach der Insert-Anweisung und nach Beendigung der IF-Anweisung .

DROP TRIGGER IF EXISTS user_au_trg; 
    DELIMITER ;; 

    CREATE OR REPLACE TRIGGER user_au_trg 
     AFTER UPDATE ON users 
     FOR EACH ROW 
     BEGIN 
     IF NEW.UserNameVerified = '1' THEN 
     INSERT INTO changeLog(logId,userId,logDate, theLog) VALUES (null, new.UserId, NOW(), 'User Has Now Been Verified'); 
     END IF; 
     END ;; 
    DELIMITER ; 

hoffe, das hilft

+0

ich immer noch nicht verstehen, was falsch – luffy

+1

Sind Sie meine Aussage Fehler sagen? Wenn ja, können Sie den Fehler bitte posten? Wenn nicht, können Sie hervorheben, welchen Teil Sie nicht verstehen, und ich werde meine Antwort verbessern, um diesen Punkt zu verdeutlichen. Danke –

+0

ah danke ich habe die Änderungen zuerst nicht gesehen. danke, es hat funktioniert – luffy