2014-01-13 3 views
0

Я пытаюсь создать триггер, чтобы предотвратить вставку нулевых дат:Что случилось с этим триггером MySQL, который предотвращает пустые даты?

CREATE TRIGGER responses_before_insert BEFORE INSERT ON responses 
FOR EACH ROW 
BEGIN 
IF (NEW.date_of_plan IS NULL OR NEW.date_of_plan = '0000-00-00') THEN 
SET NEW.date_of_plan = CURDATE(); 
END IF; 
IF (NEW.date_of_update IS NULL OR NEW.date_of_update = '0000-00-00') THEN 
SET NEW.date_of_update = CURDATE(); 
END IF; 
END 

Однако, я получаю следующее сообщение об ошибке:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 

Может кто-нибудь объяснить, что это не так?

Спасибо!

+1

Попробуйте с разделителем. – Mihai

ответ

0

Проблема была решена путем изменения разделителя перед запросом, т.е. Я выполнил

DELIMITER $$ 

Перед запросом триггера.

+0

Ха-ха, я не понял, что вы были создателем сообщения;/... изменил мой ответ. –

0

Как и вы, вам нужен разделитель.

DELIMITER $$ 
CREATE TRIGGER responses_before_insert BEFORE INSERT ON responses 
FOR EACH ROW 
BEGIN 
IF (NEW.date_of_plan IS NULL OR NEW.date_of_plan = '0000-00-00') THEN 
SET NEW.date_of_plan = CURDATE(); 
END IF; 
IF (NEW.date_of_update IS NULL OR NEW.date_of_update = '0000-00-00') THEN 
SET NEW.date_of_update = CURDATE(); 
END IF; 
END $$ 
DELIMITER ; 

Тогда вы также можете установить его как выполненный на последней строке. Лучше практиковать!

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