没有检查约束的SQL Server的ENUM?

时间:2011-05-29 18:58:05

标签: sql-server types enums create-table check-constraints

我试图在MySQL转换过程中为SQL Server中的ENUM数据类型找到替代方法。我知道检查约束存在,但我希望简单地创建新表以完全替换枚举对象。所以目标的要点是:

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

C#可以根据需要轻松调用这些值。有什么办法吗?或者我必须使用支票吗?

1 个答案:

答案 0 :(得分:0)

您可以使用这些值创建一个表,并使用外键约束在主表中引用它们。在下面的代码中,FKTypes将阻止插入ID范围之外的任何内容。

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,所以这不是针对打字错误的测试,但是如果你发现它有用,你可以尝试一下。

此致

·彼得