2011-05-29 103 views
0

我正在嘗試在我的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

回答

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所以這不是對錯別字進行測試,但你可以給它一個嘗試,如果你覺得它有用。

問候

彼得