1

如果我有一个表,其中AId是主键,BId并且CId是引用其表的外键。我需要使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
4

3 回答 3

9

您需要创建唯一索引或唯一约束。

我通常更喜欢唯一索引,因为它们更灵活(如果需要,可以添加包含的列)并且它们不必在模式中唯一命名。

唯一索引的示例语法

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

的顺序对唯一性保证没有影响,但确实会影响索引可以有效支持的查询(这种方式支持通过or但不BId, CId查找)BidBId, CIdCId

于 2013-02-22T22:45:25.290 回答
3

试试这个:

ALTER TABLE myTable 
ADD CONSTRAINT myConstraint 
UNIQUE NONCLUSTERED
(
           BId, CId
)
于 2013-02-22T22:45:20.837 回答
2

您可以创建不是主键的唯一索引。这将强制 BId 和 CId 的组合是唯一的。

CREATE UNIQUE INDEX ix_ATable_AltUniqueIndex ON ATable(BId,CId)

或者您可以创建一个唯一的约束

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

创建唯一约束似乎也创建了唯一索引。

于 2013-02-22T22:52:15.243 回答