ENUM для SQL Server без ограничения проверки?

Я пытаюсь найти альтернативу типу данных ENUM в SQL Server в моем процессе преобразования MySQL. Я знаю, что ограничение проверки существует, но я хочу просто создать новые таблицы, чтобы полностью заменить объекты перечисления. Итак, суть цели:

Create Table Enum OrderType {
   Buy = 1;
   Sell = 2;
   Short = 3;
   Cover = 4;
}

Где C# может легко вызывать эти значения по мере необходимости. Любой способ сделать это? Или я должен использовать чек?


person JBear    schedule 29.05.2011    source источник
comment
forums.asp.net/t/1161357.aspx   -  person OMG Ponies    schedule 29.05.2011
comment
Думаю, самый простой и лучший ответ на ваш вопрос здесь: stackoverflow.com/questions/262802/   -  person moriesta    schedule 15.11.2011


Ответы (1)


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

create table Types
(
TypeId int not null primary key,
Value varchar(10) not null
)
go
insert Types(TypeId, Value) values (1, 'Buy'), (2, 'Sell'), (3, 'Short'), (4, 'Cover')
go
create table Main
(
ColData varchar(1000),
ColType int not null,
constraint FK_ColType foreign key references Types(TypeId)
)
go

У меня нет под рукой SSMS, поэтому это не проверено на наличие опечаток, но вы можете попробовать, если сочтете это полезным.

С Уважением

Петр

person Piotr Rodak    schedule 29.05.2011