Почему я получаю синтаксическую ошибку в MySQL, связанную с оператором if и выбросом исключения, упомянутого в StackOverflow?

#mysql

Вопрос:

В чем ошибка в этом коде (при условии, что teacher она существует)? Этот код продолжает выдавать мне синтаксические ошибки в mysql workbench, но он отлично работает в vscode.

 CREATE TRIGGER teacher_add_validation AFTER INSERT ON teacher FOR EACH ROW
BEGIN
IF NEW.Account LIKE '% %' THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "No spaces allowed in account names.";
END IF;
END;
 

Комментарии:

1. показать сообщение об ошибке

2. @BerndBuffen 19:32:40 СОЗДАЙТЕ ТРИГГЕР stu_add_validation ПОСЛЕ ВСТАВКИ НА студента ДЛЯ КАЖДОЙ СТРОКИ, ЕСЛИ ОНА НОВАЯ. Учетная запись, ТАКАЯ КАК»%%», ЗАТЕМ СООБЩИТЕ SQLSTATE «45000», УСТАНОВИТЕ MESSAGE_TEXT = «В именах учетных записей не допускается пробелов». Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL, на наличие правильного синтаксиса, который будет использоваться рядом » в строке 3 0.000 сек

Ответ №1:

у вас есть РАЗДЕЛИТЕЛЬ ??

 set DELIMITER //

CREATE TRIGGER teacher_add_validation AFTER INSERT ON teacher FOR EACH ROW
BEGIN
IF NEW.Account LIKE '% %' THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "No spaces allowed in account names.";
END IF;
END;

//
SET DELIMITER ;
 

см.: https://mariadb.com/kb/en/delimiters/