2011-02-14 4 views
3

SQL Server 2008 대화 상자에서 수동으로 제약 조건을 어떻게 정의합니까? 이미 레코드를 추가하지 않으면 새 레코드를 추가 할 때 제약 조건을 추가하고 싶습니다. 내 테이블이 CatIDCategory 테이블에서 키입니다제약 조건 대화 상자를 사용하여 SQL Server 2008에 제약 조건을 추가하는 방법은 무엇입니까?

AdvCatJoinID 내 차 키가되도록 구성하고, AliasID 별칭 테이블에서 기본 키이다, 나는 제약이 CatIDAliasID이 이미 존재하는 경우 것이되고 싶어 한 쌍으로 테이블에 다음 (이미 존재하는 것처럼), 새 레코드를 추가하지 않는 방법?

감사

답변

2

1 단계 : SQL 서버 개체 탐색기에서

, 당신이 제약 조건을 넣어, 그리고 Indexes 하위 노드로 이동하고 마우스 오른쪽 버튼을 클릭 할 데이터베이스 및 테이블을 찾아 New Index 선택 :

enter image description here

단계 2 : t에서

  • 는 귀하가 [ X ] Unique 확인란을 두 번에 두 개의 열을 추가 할 [ Add ] 버튼을
  • 클릭 체크되어 있는지 확인
  • 선택의 이름을 지정 : 팝업 그는 대화 상자에서 고유 색인을 정의 당신은 두 단계를 수행 한 인덱스

enter image description here

, 당신은 지금 (CatID, AliasID) 조합의 고유 색인 및 두 값의 쌍이 두 번 이상 표에 존재할 수 없습니다.

2

당신은 정말 AdvCatJoinID 열 필요하십니까? 일반적으로 이러한 연관성 테이블의 경우 2 개의 외래 키 열에 복합 기본 키가 있습니다. 그것은 독특한 측면을 강요합니다.

그렇지 않으면 SSMS에서 수행하려면 "색인/키"대화 상자 (제약 조건이 아님) 대화 상자를 선택하고 두 개의 열을 모두 선택하여 새 고유 색인을 구성해야합니다. 테이블을 마우스 오른쪽 버튼으로 클릭하고 "디자인"을 선택한 다음 테이블 디자이너 격자를 마우스 오른쪽 버튼으로 클릭 한 후이 대화 상자에 액세스합니다.

고유 인덱스가 아닌 고유 제한 조건을 만들려면 "고유 키"옵션을 선택하지만 두 옵션 중 실제적인 차이는 없습니다.

+0

"실제적인 차이는 없습니다 ..."- 외래 키 제약 조건이 고유 제약 조건을 참조 할 수 있지만 고유 인덱스는 참조 할 수없는 경우는 예외입니다. –

+0

@Damien - 그런 차이점이 없습니다. 'create table t (c int) go 고유 인덱스 ix를 만듭니다. (c) t2 (c int references t (c))를 만듭니다. 실제적으로 고유 제한 조건을 백업하는 인덱스에 포함 된 열을 추가 할 수없는 것과 같은 몇 가지 차이점이있을 수 있습니다. –

+0

나는 과거에 이런 행동의 차이를 발견했으나 2008 년과 2000 년에 대해 재검사를 했으므로 확실합니다. 내가 뭘 생각했는지 궁금해? –

관련 문제