Есть ли способ указать, например, 4 различных значения для столбца varchar в MS SQL Server 2008?
Например, мне нужен столбец с именем Frequency (varchar), который принимает только «Ежедневно», «Еженедельно», «Ежемесячно», «Ежегодно» в качестве возможных значений.
Возможно ли это установить в SQL Server Management Studio при создании таблицы?
sql
sql-server-2008
ssms
Адам
источник
источник
Ответы:
Вы уже смотрели на добавление в
check constraint
этот столбец, который ограничивал бы значения? Что-то типа:CREATE TABLE SomeTable ( Id int NOT NULL, Frequency varchar(200), CONSTRAINT chk_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')) )
источник
Frequency varchar(200)
Вы хотите проверить ограничение .
Вы хотите что-то вроде:
ALTER TABLE dbo.Table ADD CONSTRAINT CK_Table_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
Вы также можете реализовать проверочные ограничения с помощью скалярных функций, как описано в приведенной выше ссылке, и я предпочитаю это делать.
источник
Лично я бы закодировал это как tinyint и:
Причины:
В среднем для хранения текста потребуется 8 байт, для tinyint - 1 байт. Это будет иметь значение для миллионов строк.
А как насчет сопоставления? "Daily" - это то же самое, что "DAILY"? Для такого сравнения требуются ресурсы.
Наконец, что, если вы хотите добавить «Раз в две недели» или «Ежечасно»? Это требует изменения схемы, когда вы можете просто добавлять новые строки в таблицу поиска.
источник
Когда вы редактируете таблицу,
щелкните правой кнопкой мыши -> Проверить ограничения -> Добавить -> Введите что-нибудь вроде
Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
в поле выражения и хорошее имя ограничения в поле (Имя).Вы сделали.
источник