Как мне написать ограничение SQL, чтобы число попадало в диапазон?

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
11
0
19 316
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий
ALTER TABLE Table
ADD CONSTRAINT CK_Table_Column_Range CHECK (
   Column >= 0 AND Column <= 100 --Inclusive
)

Если вы используете BETWEEN 0 AND 100, как упоминалось в других ответах, SQL Server Management Studio преобразует его в ([column]>=(0) AND [column]<=(100)) для вас, если вы используете графический интерфейс для его создания.

Paul Sturm 16.10.2015 17:12

Проверочное ограничение вроде «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: Вы были бы удивлены, увидев невероятное количество плохих данных, хранящихся на серверах баз данных средних и крупных организаций, из-за глупых человеческих ошибок или иногда запутанных системных ошибок, которые трудно вычислить или воспроизвести. Чем больше у вас инноваций в бизнесе, тем выше вероятность внедрения неверных данных в базы данных. Если вы хотите иметь согласованную базу данных, просто внедрите необходимые проверки прямо в схему базы данных. Что произойдет, если пользователь получит сообщение об ошибке? Многие вещи, кроме вставки неверных данных в базу данных.

Richard Gomes 31.07.2020 19:11

Другие вопросы по теме