Страницы

Поиск по вопросам

вторник, 28 мая 2019 г.

Почему CHECK не работает в MySQL?

mysql> create table t (x int check (x>0)); Query OK, 0 rows affected (0.44 sec)
mysql> insert into t value (-1); Query OK, 1 row affected (0.08 sec)
mysql> create table t1(x int, constraint namec check (x>0)); Query OK, 0 rows affected (0.28 sec)
mysql> insert into t1 value (-1); Query OK, 1 row affected (0.06 sec)
Почему я не получаю никаких ошибок/предупреждений о том, что добавляемое мной значение в таблицу не удовлетворяет CHECK?


Ответ

Потому что MySQL игнорирует это объявление. Он не поддерживает таких ограничений.
The CHECK clause is parsed but ignored by all storage engines. — MySQL Reference Manual по CREATE TABLE
Вместо них предлагается использовать триггеры.

Это перевод ответа на вопрос CHECK constraint in MySQL is not working на StackOverflow.
См. также аналогичный вопрос на DBA.SE: check constraint does not work?

Комментариев нет:

Отправить комментарий