Имеет ли SQL Server 2008 такой тип данных, как MySQL enum
?
SQL Server эквивалентен типу данных перечисления MySQL?
Ответ 1
Это не так. Там неопределенный эквивалент:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
Ответ 2
Лучшее решение, которое я нашел в этом, - создать таблицу поиска с возможными значениями в качестве первичного ключа и создать внешний ключ для таблицы поиска.
Ответ 3
Таблицы поиска IMHO - это путь, имеющий ссылочную целостность. Но только если вы избегаете "Злых магических чисел", следуя примеру такого: Сгенерировать перечисление из таблицы поиска базы данных с помощью T4
Удачи!
Ответ 4
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
RETURN 0
END
GO
CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
RETURN 1
END
-- etc...
В тех случаях, когда важна производительность, все еще используйте жесткие значения.
Ответ 5
Нашел этот интересный подход, когда я хотел реализовать перечисления в SQL Server.
Подход, упомянутый ниже в ссылке, довольно убедителен, учитывая, что все ваши потребности в базе данных базы данных могут быть удовлетворены двумя центральными таблицами.