SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.09.2014 22:20:03

warma2d
Завсегдатай
Зарегистрирован: 12.08.2012
Сообщений: 33

Как правильно использовать простейший CHECK ?

Добрый день!

Предположим, существует колонка с именем number. Нужно сделать проверку, что число попадающее в поле number будет заведомо < 5.

Составляю следующий запрос:
ALTER TABLE t ADD CHECK (`number` <5);
Сервер MySQL 5.5.38 (база данных InnoDB) отрабатывает данный запрос без ошибок.

Однако фактически можно спокойно добавить число и меньше пяти и больше пяти.

Для дополнительной проверки работоспособности CHECK'a сделал Export DB и не обнаружил там никакого CHECK'a. sad

Из этого следует, что современный сервер БД вообще не поддерживает CHECK ? ( из старого стандарта SQL92)


Подскажите пожалуйста что-нибудь по данному поводу.

Заранее спасибо!

Отредактированно warma2d (25.09.2014 22:21:00)

Неактивен

 

#2 25.09.2014 22:46:37

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как правильно использовать простейший CHECK ?

Добрый день.

Увы, check constraint'ы существуют в mysql/mariadb лишь номинально - на запрос субд не ругается, но и работать они не работают. И не встречал информации пока, чтобы их планировали добавить в ядро.

Так что если они сильно нужны, то скорее смотрите в сторону других субд sad.
В рамках mysql можно воспользоваться триггером.

См. http://sqlinfo.ru/forum/viewtopic.php?pid=35022#p35022
и
http://sqlinfo.ru/forum/viewtopic.php?pid=38480#p38480


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson