2013-09-29 1 views
2

У меня есть столбец, который называется NumberInStock. Тем не менее, в базе данных я хочу ограничить значения, которые могут быть введены в этот столбец между 1 и 100. Какое ограничение можно использовать в столбце и было бы правильным синтаксисом SQL-запроса? То, что я получил до сих пор:SQL-ограничение для столбца

ALTER TABLE Inventory 
ALTER COLUMN NumberInStock 

Теперь то, что я кладу после этого поставить ограничение и то, что ограничение я использовал бы

Я использую MySQL, который имеет стандарт ANSI/ISO 1999.

+0

Вы должны сообщить нам, какую СУБД вы используете. –

+0

Просто добавил, какие СУБД я использую для сообщения – Domecraft

+1

MySQL делает ** не ** поддерживает контрольные ограничения. Даже если он примет SQL из принятого вопроса, он будет молча ** игнорировать ** это! –

ответ

3

Обычно такого рода проблемы должны быть решены с помощью СНЕСК следующим образом-

ALTER TABLE Inventory ADD CONSTRAINT chk1 CHECK(NumberInStock BETWEEN 1 AND 100); 

Это могло бы быть сделано в ORACLE Но MySQL имеет BUG reported относительно реализация контрольного ограничения.

Следовательно, у должен реализовать два триггера т.е. один для INSERT и другой для UPDATE на этой таблице.

+0

Спасибо большое! Я знал, что MySQL действует странно, но я понял, что это потому, что я использовал запросы, предназначенные для Oracle, и я никогда не понимал, что синтаксис будет отличаться для MySQL. – Domecraft

+0

Вы можете просто думать о MySQL как о СУБД с ограниченной функциональностью ORACLE. В конце концов, он широко используется во многих корпоративных приложениях, и ORACLE и MySQL поступают из ORACLE corp. –

0

Использовать контрольное ограничение.

ALTER TABLE <TABLE NAME> 
ADD CONSTRAINT <CONSTRAINT NAME> CHECK(<PREDICATE> OR/AND/NOT <PREDICATE> ...) 
+0

Благодарим вас за ответ. Я попытался найти его в Интернете, но я ничего не смог найти. – Domecraft

+2

В MySQL ограничения 'CHECK' анализируются на корректность синтаксиса, а затем ** игнорируются **. Никаких проверок по значениям не будет! –