1

AIdが主キーでBIdCIdがテーブルを参照する外部キーであるテーブルがある場合。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
4

3 に答える 3

9

一意のインデックスまたは一意の制約を作成する必要があります。

私は通常、一意のインデックスの方が柔軟性が高く (必要に応じて含まれる列を追加できます)、スキーマで一意に名前を付ける必要がないため、好んで使用します。

一意のインデックスの構文例

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

の順序はBId, CId、一意性の保証に違いはありませんが、インデックスが効率的にサポートできるクエリに影響を与えます (この方法では、BidorによるルックアップはサポートされますBId, CIdが、そうではありませんCId) 。

于 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 に答える