@immelnikoff
Изучаю БД

Как в MySQL 5.7 сделать, чтобы при пропуске в insert значения для ENUM-поля (NN) генерилась ошибка?

В нестрогом и строгом режиме, если в insert нет значения для ENUM-поля (NOT NULL), то в данное поле записывается первый нумерованный член из перечня данного ENUM.
Во-первых, очень странно, что в данном контексте строгий и нестрогий режимы не отличаются. Это нормально?
А во-вторых, как сделать наиболее просто, чтобы при пропуске в insert значения для ENUM-поля (NOT NULL) генерилась ошибка?
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас случаем для поля DEFAULT не установлен?

P.S.
Это штатное поведение MySQL:
If an ENUM column is declared to permit NULL, the NULL value is a valid value for the column, and the default value is NULL. If an ENUM column is declared NOT NULL, its default value is the first element of the list of permitted values.

Значит проверку можно сделать только повесив на BEFORE INSERT/BEFORE UPDATE триггер с проверкой значения и генерацией ошибки через SIGNAL.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы