SQL Server эквивалентен типу данных перечисления MySQL? - PullRequest
119 голосов
/ 16 сентября 2009

Имеет ли SQL Server 2008 тип данных, например, MySQL enum?

Ответы [ 5 ]

138 голосов
/ 16 сентября 2009

Это не так. Есть неопределенный эквивалент:

mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
79 голосов
/ 21 июня 2012

Лучшее решение, которое я нашел в этом, - это создать справочную таблицу с возможными значениями в качестве первичного ключа и создать внешний ключ для справочной таблицы.

3 голосов
/ 01 августа 2012

ИМХО Таблицы поиска - это путь с ссылочной целостностью. Но только если вы избегаете «злых магических чисел», следуя примеру, подобному этому: Создать перечисление из таблицы поиска в базе данных, используя T4

Веселись!

2 голосов
/ 27 августа 2013

Нашел этот интересный подход, когда я хотел реализовать перечисления в SQL Server.

Подход, упомянутый ниже в ссылке, достаточно убедителен, учитывая, что все перечисленные в вашей базе данных потребности могут быть удовлетворены двумя центральными таблицами.

http://blog.sqlauthority.com/2010/03/22/sql-server-enumerations-in-relational-database-best-practice/

2 голосов
/ 23 февраля 2012
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 0
END

GO

CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 1
END

-- etc...

В тех случаях, когда производительность важна, все равно используйте жесткие значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...