2016-04-23 3 views
1

Я пытаюсь создать триггер, который вставляется в таблицу после проверки булевского поля. Вот мой код:Создание триггера в PhpMyAdmin вызывает синтаксическую ошибку

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 ; 

Всякий раз, когда я пытаюсь запустить это, я получаю ошибку синтаксиса:

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

Что я делаю неправильно, что вызывает эту ошибку?

ответ

1

Есть несколько корректировок, которые я бы сделал некоторыми, это только личные предпочтения. Код размещен ниже. Однако основные проблемы были:

  1. искаженного IF заявление он должен быть -

    IF [Выражение] THEN [IF TRUE] ELSE [IF FALSE].

  2. Отсутствующие терминаторы после оператора Вставки и после окончания Обозначение IF.

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 ; 

Надеется, что это помогает

+0

Я все еще не понимаю, что случилось – luffy

+1

Вы говорите, мои ошибки заявления? Если да, можете ли вы опубликовать сообщение об ошибке? Если нет, вы можете указать, какую часть вы не понимаете, и я усилю свой ответ, чтобы прояснить этот момент. Спасибо –

+0

ах спасибо, я не видел изменений вначале. спасибо, что это сработало – luffy

Смежные вопросы