2013-02-22 211 views
1

如果我有一個表,其中AId是主鍵,BIdCId是引用其表的外鍵。我需要使BIdCId的組合獨一無二。複合鍵的外鍵

我該如何改變表格以使組合獨一無二?

感謝

AId BId CId Notes  Date 
=== === === =====  ==== 
1  200 1  Random 2/2/2005 
2  201 2  ETC  2/8/2007 
3  202 3  ETC  2/12/2012 
+2

使用「create」或「add」等各種修飾符搜索「sql server unique index」。應該有很多結果。 – 2013-02-22 22:44:18

回答

9

您需要創建唯一索引或唯一約束。

我通常更喜歡獨特的索引,因爲它們更靈活(如果需要,可以添加包含的列),並且它們不必在模式中唯一命名。

唯一索引示例語法

CREATE UNIQUE NONCLUSTERED INDEX SomeIndex ON YourTable(BId, CId) 

BId, CId的順序使得以唯一性保證沒有任何區別,但確實會影響指數可以有效地支持查詢(即反過來支持BidBId, CId但仰視不是CId

3

試試這個:

ALTER TABLE myTable 
ADD CONSTRAINT myConstraint 
UNIQUE NONCLUSTERED 
(
      BId, CId 
) 
2

您可以創建不是主鍵的唯一索引。這將迫使BId和CId的組合獨一無二。

CREATE UNIQUE INDEX ix_ATable_AltUniqueIndex ON ATable(BId,CId) 

或者你可以創建一個唯一約束

ALTER TABLE ATable ADD CONSTRAINT uni_ATable UNIQUE (BId,CId) 

創建一個唯一約束似乎還創建唯一索引。