如果我有一个表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
答案 0 :(得分:9)
您需要创建唯一索引或唯一约束。
我通常更喜欢唯一索引,因为它们更灵活(如果需要可以添加包含的列),并且它们不必在模式中唯一命名。
唯一索引的示例语法
CREATE UNIQUE NONCLUSTERED INDEX SomeIndex ON YourTable(BId, CId)
BId, CId
的顺序对唯一性保证没有任何影响,但确实会影响索引可以有效支持的查询(这种方式支持按Bid
或BId, CId
查找而不是{ {1}})
答案 1 :(得分:3)
试试这个:
ALTER TABLE myTable
ADD CONSTRAINT myConstraint
UNIQUE NONCLUSTERED
(
BId, CId
)
答案 2 :(得分:2)
您可以创建不是主键的唯一索引。这将强制BId和CId的组合是唯一的。
CREATE UNIQUE INDEX ix_ATable_AltUniqueIndex ON ATable(BId,CId)
或者您可以创建唯一约束
ALTER TABLE ATable ADD CONSTRAINT uni_ATable UNIQUE (BId,CId)
创建一个唯一约束似乎也创建了一个唯一索引。