Czy istnieje sposób, aby określić na przykład 4 różne wartości dla kolumny varchar w MS SQL Server 2008?
Na przykład potrzebuję kolumny Częstotliwość (varchar), w której dopuszczalne są tylko wartości „Codziennie”, „Co tydzień”, „Miesięcznie”, „Rocznie”
Czy można to ustawić w SQL Server Management Studio podczas tworzenia tabeli?
sql
sql-server-2008
ssms
Adam
źródło
źródło
Odpowiedzi:
Czy spojrzałeś już na dodanie
check constraint
w tej kolumnie znaku, który ograniczyłby wartości? Coś jak:CREATE TABLE SomeTable ( Id int NOT NULL, Frequency varchar(200), CONSTRAINT chk_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')) )
źródło
Frequency varchar(200)
Chcesz ograniczenia sprawdzającego .
Chcesz coś takiego:
ALTER TABLE dbo.Table ADD CONSTRAINT CK_Table_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
Możesz również zaimplementować ograniczenia sprawdzające za pomocą funkcji skalarnych, jak opisano w powyższym linku, a ja wolę to robić.
źródło
Osobiście zakodowałbym to jako tinyint i:
Powody:
Przechowywanie tekstu zajmie średnio 8 bajtów, a tinyint 1 bajt. W przypadku milionów wierszy będzie to miało znaczenie.
A co z zestawieniem? Czy „Daily” to to samo, co „DAILY”? Takie porównanie wymaga zasobów.
Na koniec, co zrobić, jeśli chcesz dodać „Co dwa tygodnie” lub „Co godzinę”? Wymaga to zmiany schematu, gdy wystarczy dodać nowe wiersze do tabeli odnośników.
źródło
Podczas edycji tabeli
Kliknij prawym przyciskiem myszy -> Sprawdź ograniczenia -> Dodaj -> Wpisz coś podobnego
Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
do pola wyrażenia i dobrą nazwę ograniczenia w polu (Nazwa).Skończyłeś.
źródło