Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!
Предположим, существует колонка с именем number. Нужно сделать проверку, что число попадающее в поле number будет заведомо < 5.
Составляю следующий запрос:
ALTER TABLE t ADD CHECK (`number` <5);
Сервер MySQL 5.5.38 (база данных InnoDB) отрабатывает данный запрос без ошибок.
Однако фактически можно спокойно добавить число и меньше пяти и больше пяти.
Для дополнительной проверки работоспособности CHECK'a сделал Export DB и не обнаружил там никакого CHECK'a.
Из этого следует, что современный сервер БД вообще не поддерживает CHECK ? ( из старого стандарта SQL92)
Подскажите пожалуйста что-нибудь по данному поводу.
Заранее спасибо!
Отредактированно warma2d (25.09.2014 22:21:00)
Неактивен
Добрый день.
Увы, check constraint'ы существуют в mysql/mariadb лишь номинально - на запрос субд не ругается, но и работать они не работают. И не встречал информации пока, чтобы их планировали добавить в ядро.
Так что если они сильно нужны, то скорее смотрите в сторону других субд .
В рамках mysql можно воспользоваться триггером.
См. http://sqlinfo.ru/forum/viewtopic.php?pid=35022#p35022
и
http://sqlinfo.ru/forum/viewtopic.php?pid=38480#p38480
Неактивен