ENUM for SQL Server没有检查约束?

问题描述:

我正在尝试在我的MySQL转换过程中为SQL Server中的ENUM数据类型找到替代方法。我知道检查约束存在,但我只是想创建新的表来完全替换枚举对象。所以目标的要点:ENUM for SQL Server没有检查约束?

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

其中C#可以根据需要轻松调用这些值。任何方式来做到这一点?或者我必须使用支票吗?

+0

http://forums.asp.net/t/1161357.aspx – 2011-05-29 19:05:46

+0

我想你的问题的最简单,最好的答案就在这里: HTTP://计算器。 COM /问题/ 262802 /不-SQL服务器2005具备的,一个相当于对mysqls-枚举数据类型 – Acute 2011-11-15 06:14:04

您可以创建一个包含这些值的表格,并使用外键约束在主表格中引用它们。在下面的代码中,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所以这不是对错别字进行测试,但你可以给它一个尝试,如果你觉得它有用。

问候

彼得