0

下面的代碼的偉大工程創建Unique ConstraintsSQL Server的唯一約束的範疇,根據FK

ALTER TABLE <tablename> ADD CONSTRAINT 
      <constraintname> UNIQUE NONCLUSTERED 
    (
       <columnname> 
    ) 

我有一個名爲Products表具有FK的另一個表稱爲Categories。試想一下,下面的列表分類:

軟件

電影

音樂

我需要在這裏是有一個類別內的唯一約束我的內ProductsProductName列表。例如,可以在Products表中的另一個類別中使用兩個相同的ProductName列,但不在同一個類別中。我是SQL Server 2008 R2。有什麼想法嗎?

回答

4

您可以將多個列添加到唯一約束或唯一索引定義中。你需要有兩列ProductName, CategoryId

示例語法

ALTER TABLE Products ADD CONSTRAINT some_name 
     UNIQUE NONCLUSTERED(ProductName, CategoryId) 
+0

感謝複合唯一約束。我想我需要兩列的約束,但我很難弄清楚如何。任何代碼示例或資源? – tugberk

+1

@tugberk - 我的答案中添加了示例語法。 [詳情請參閱BOL。](http://msdn.microsoft.com/en-us/library/ms188066.aspx) –

+0

很酷@Martin。謝謝。我沒有嘗試,但我確定它是一個。 – tugberk