MySQL не налага ограничения за проверка.
Това е добре документирано отклонение от SQL стандарта. (Въпреки че е неочаквано за непосветените.)
Ако се нуждаете от базата данни на MySQL, за да наложите „ограничение за проверка“, налагането трябва да бъде кодирано в BEFORE INSERT
и BEFORE UPDATE
задействане.
Тази бележка:
е заровен в MySQL Reference Manual, под CREATE TABLE
синтаксис.
Справка:https://dev.mysql.com/doc /refman/5.5/en/create-table.html
ПРЕДУПРЕЖДЕНИЕ ЗА ENUM
ENUM
не ограничава вмъкването на "невалидни" стойности; невалидна стойност се преобразува в низ с нулева дължина, издава се предупреждение, но това не е грешка.
Демонстрация:
CREATE TABLE foo (gen ENUM('M','F'))
INSERT INTO foo (gen) VALUES ('x')
-- Warning Code : 1265
-- Data truncated for column 'gen' at row 1
SELECT gen, CHAR_LENGTH(gen) FROM foo;
-- gen CHAR_LENGTH(gen)
-- --- ----------------
-- 0