如果我有一個表,其中AId
是主鍵,BId
和CId
是引用其表的外鍵。我需要使BId
和CId
的組合獨一無二。複合鍵的外鍵
我該如何改變表格以使組合獨一無二?
感謝
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
如果我有一個表,其中AId
是主鍵,BId
和CId
是引用其表的外鍵。我需要使BId
和CId
的組合獨一無二。複合鍵的外鍵
我該如何改變表格以使組合獨一無二?
感謝
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
您需要創建唯一索引或唯一約束。
我通常更喜歡獨特的索引,因爲它們更靈活(如果需要,可以添加包含的列),並且它們不必在模式中唯一命名。
唯一索引示例語法
CREATE UNIQUE NONCLUSTERED INDEX SomeIndex ON YourTable(BId, CId)
的BId, CId
的順序使得以唯一性保證沒有任何區別,但確實會影響指數可以有效地支持查詢(即反過來支持Bid
或BId, CId
但仰視不是CId
)
試試這個:
ALTER TABLE myTable
ADD CONSTRAINT myConstraint
UNIQUE NONCLUSTERED
(
BId, CId
)
您可以創建不是主鍵的唯一索引。這將迫使BId和CId的組合獨一無二。
CREATE UNIQUE INDEX ix_ATable_AltUniqueIndex ON ATable(BId,CId)
或者你可以創建一個唯一約束
ALTER TABLE ATable ADD CONSTRAINT uni_ATable UNIQUE (BId,CId)
創建一個唯一約束似乎還創建唯一索引。
使用「create」或「add」等各種修飾符搜索「sql server unique index」。應該有很多結果。 – 2013-02-22 22:44:18