phpMyAdmin триггер GUI проверки возраста - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу проверить, больше ли возраст, чем 18 лет, прежде чем вставлять запись в таблицу «сотрудники».Я использую инструмент запуска триггера phpMyAdmin.Но при вводе этого скрипта в разделе «Определение» выдается следующая ошибка.

BEGIN
    IF (DATEDIFF(CURRENT_DATE(),NEW.birth_date) < 6570) THEN
        RAISEERROR('Age is less than 18 years!',16,1)
        ROLLBACK
    END IF
END

error message

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 22 ноября 2018

RAISEERROR и ROLLBACK используются в синтаксисе TSQL (Microsoft SQL Server).

В случае MySQL мы используем SIGNAL .. SET MESSAGE_TEXT .., чтобы вызвать исключение внутри триггера:

BEGIN
    IF (DATEDIFF(CURRENT_DATE(),NEW.birth_date) < 6570) THEN

      -- Throw Exception
      SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'Age is less than 18 years!';

    END IF;  -- A semicolon (delimiter) is missing here
END

Для сигнализации общего значения SQLSTATE,используйте «45000», что означает «необработанное пользовательское исключение».

Значения ошибок, которые доступны после выполнения SIGNAL, представляют собой значение SQLSTATE, созданное оператором SIGNAL и элементами MESSAGE_TEXT и MYSQL_ERRNO.

...