2013-02-22 2 views
1

AId이 기본 키이고 BIdCId이 테이블을 참조하는 외래 키인 경우. 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 
+2

"create"또는 "add"와 같은 다양한 수정자를 사용하여 "sql server unique index"를 검색하십시오. 많은 결과가 있어야합니다. –

답변

9

당신은 고유 인덱스 또는 고유 제한 조건을 작성해야합니다.

필자는 일반적으로보다 유연한 (원하는 경우 포함 된 열을 추가 할 수 있음) 고유 한 인덱스를 선호하며 스키마에서 고유하게 이름을 지정할 필요가 없습니다. BId, CId의 순서는 유일성 보장에 차이가 없습니다 만, 인덱스가 효율적으로 지원할 수있는 쿼리에 영향을 미치지 않습니다

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

고유 인덱스에 대한

예 구문은 (그 방법은 라운드 Bid 또는 BId, CId 만에 의해보고 지원 not CId)

3

이 시도

감사합니다 :

ALTER TABLE myTable 
ADD CONSTRAINT myConstraint 
UNIQUE NONCLUSTERED 
(
      BId, CId 
) 
2

기본 키가 아닌 고유 인덱스를 만들 수 있습니다. 이렇게하면 BId와 CId의 조합이 고유하게됩니다.

CREATE UNIQUE INDEX ix_ATable_AltUniqueIndex ON ATable(BId,CId) 

아니면 고유 제한 조건을 만들기 고유 제한 조건

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

를 만들 수 있습니다 또한 고유 인덱스를 만들 것으로 보인다.