Как мне написать ограничение SQL для числа, попадающего в диапазон? - PullRequest
8 голосов
/ 19 декабря 2008

Используя SQL Server, как мне написать сценарий ограничения для поля в таблице, чтобы допустимый диапазон значений составлял от 0 до 100?

Ответы [ 4 ]

19 голосов
/ 19 декабря 2008
ALTER TABLE Table
ADD CONSTRAINT CK_Table_Column_Range CHECK (
   Column >= 0 AND Column <= 100 --Inclusive
)
3 голосов
/ 19 декабря 2008

Проверяющее ограничение типа "fieldname BETWEEN 0 AND 100" должно сделать это.

2 голосов
/ 19 декабря 2008

Попробуйте:

ALTER TABLE myTableName
ADD CONSTRAINT myTableName_myColumnName_valZeroToOneHundred
CHECK (myColumnName BETWEEN 0 AND 100)

Эта проверка будет включающей - вот некоторая информация о МЕЖДУ из MSDN: МЕЖДУ (Transact SQL)

1 голос
/ 20 декабря 2008

По моему мнению, правильный вопрос не «как», а «почему».

Это правило 0-100 звучит для меня как бизнес-правило. Почему это должно быть реализовано на стороне сервера / базы данных? Если введено неправильное значение, кто получит сообщение об ошибке?

Если пользователь получит сообщение об ошибке, не будет ли проще иметь код, передающий ему сообщение до того, как транзакция достигнет сервера?

А как насчет модификации диапазона? Может ли правило измениться? Наверное, да: правила ВСЕГДА меняются. Можно ли обновить диапазон с 0-100 до 101-200? В этом случае, как насчет значений, уже введенных в базу данных?

...