如果我有一个表,其中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