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


ALTER TABLE Table
ADD CONSTRAINT CK_Table_Column_Range CHECK (
Column >= 0 AND Column <= 100 --Inclusive
)
Проверочное ограничение вроде «fieldname BETWEEN 0 AND 100» должно делать это.
Пытаться:
ALTER TABLE myTableName
ADD CONSTRAINT myTableName_myColumnName_valZeroToOneHundred
CHECK (myColumnName BETWEEN 0 AND 100)
Эта проверка будет исчерпывающей - вот некоторая информация о BETWEEN из MSDN: МЕЖДУ (Transact SQL)
На мой взгляд, правильный вопрос - не «как», а «почему».
Это правило 0-100 звучит для меня как бизнес-правило. Почему это должно быть реализовано на стороне сервера / базы данных? Если введено неверное значение, кто получит сообщение об ошибке?
Если пользователь получает сообщение об ошибке, не будет ли проще получить код, передающий ему сообщение, до того, как транзакция достигнет сервера?
А как насчет модификации диапазона? Может ли правило измениться? Думаю, да: правила ВСЕГДА меняются. Можно ли обновить диапазон с 0-100 до 101-200? В таком случае, как насчет значений, уже введенных в базу данных?
@Phillippe Grondier: Вы были бы удивлены, увидев невероятное количество плохих данных, хранящихся на серверах баз данных средних и крупных организаций, из-за глупых человеческих ошибок или иногда запутанных системных ошибок, которые трудно вычислить или воспроизвести. Чем больше у вас инноваций в бизнесе, тем выше вероятность внедрения неверных данных в базы данных. Если вы хотите иметь согласованную базу данных, просто внедрите необходимые проверки прямо в схему базы данных. Что произойдет, если пользователь получит сообщение об ошибке? Многие вещи, кроме вставки неверных данных в базу данных.
Если вы используете
BETWEEN 0 AND 100, как упоминалось в других ответах, SQL Server Management Studio преобразует его в([column]>=(0) AND [column]<=(100))для вас, если вы используете графический интерфейс для его создания.