Відповіді:
Це не так. Є невиразний еквівалент:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
Найкраще рішення, яке я знайшов у цьому, - створити таблицю пошуку з можливими значеннями в якості первинного ключа та створити зовнішній ключ до таблиці пошуку.
Таблиці пошуку IMHO - це шлях, з референтною цілісністю. Але лише якщо ви уникаєте "Evil Magic Numbers", керуючись таким прикладом: Створіть перерахунок з таблиці пошуку бази даних за допомогою T4
Веселіться!
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
RETURN 0
END
GO
CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
RETURN 1
END
-- etc...
Якщо продуктивність важлива, все-таки використовуйте жорсткі значення.
Знайшов цей цікавий підхід, коли я хотів реалізувати перерахунки в SQL Server.
Підхід, згаданий нижче у посиланні, є досить переконливим, враховуючи, що всі потреби вашої бази даних можуть бути задоволені двома центральними таблицями.