2017-01-30 12 views
0

Я пытался создать простой триггер BEFORE INSERT в таблице базы данных (MySQL v 5.7), но я продолжаю получать неопределенное сообщение «# 1064 ... синтаксическая ошибка», которое не помогает решить проблему.MySQL 5.7 Создать ошибку синтаксиса триггера?

Вот SQL:

CREATE OR REPLACE TRIGGER `CREATE_QUIZ_TRIG` BEFORE INSERT ON `quiz` 
FOR EACH ROW BEGIN 
    SET NEW.ACTIVE = UPPER(NEW.ACTIVE); 
    SET NEW.CREATED = NOW(); 
END 
/

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

https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

и понять, что для выражения многого заявления я должен переопределить разделитель в начале создания триггера, но происходит то же самое «1064 #» ошибки.

Это еще более запутанно, потому что, когда я использую интерфейс phpmyadmin для создания того же самого триггера, он отлично работает, но не будет, когда я экспортирую сгенерированный SQL и попытаюсь создать триггер, используя это !?

Спасибо за любую помощь

+0

, но не будет, когда я экспортирую сгенерированный SQL и попытаюсь создать триггер, используя это !? - Что это значит? –

+0

PhpMyAdmin позволяет выводить SQL, используемый для создания таблицы, используя ее графический интерфейс. При создании таблицы с использованием этого GUI триггер был успешно создан - поэтому я экспортировал созданный SQL и попытался создать таблицу, используя этот SQL вместо графического интерфейса; это не сработало, что я считал своеобразным. Оказывается, проблема заключалась в том, что PHPMyAdmin автоматически устанавливает разделитель по умолчанию для триггера на ';', и именно поэтому я получал синтаксическую ошибку при попытке создать триггер из-за полуколоней после 'SET. . 'command (s) - он думал, что это были разделители –

ответ

0

Я не понимал, что, по умолчанию, PHPMyAdmin добавляет ; разделитель, который разрывая ; используется, чтобы закончить заявление в пределах BEGIN END блока.