Как в MySQL 5.7 сделать, чтобы при пропуске в insert значения для ENUM-поля (NN) генерилась ошибка?
В нестрогом и строгом режиме, если в insert нет значения для ENUM-поля (NOT NULL), то в данное поле записывается первый нумерованный член из перечня данного ENUM.
Во-первых, очень странно, что в данном контексте строгий и нестрогий режимы не отличаются. Это нормально?
А во-вторых, как сделать наиболее просто, чтобы при пропуске в insert значения для ENUM-поля (NOT NULL) генерилась ошибка?
Для правильного вопроса надо знать половину ответа
У вас случаем для поля 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.
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.
Вопрос остается открытым. Как сделать, чтобы при пропуске в insert значения для ENUM-поля (NOT NULL) генерилась ошибка? То есть мне нужен действительно строгий режим БД.