주어진 다음의 표 (샘플 데이터) :SQL 서버 조건부 고유 색인
PK | ClientID | SetID | Title
-----------------------------
P1 | C1 | S1 | Title1
P2 | C1 | S1 | Title1
P3 | C2 | S2 | Title1
P4 | C2 | S2 | Title1
P3 | C1 | S3 | Title2
P5 | C1 | S3 | Title2
가정 할 Set
내가 고유 인덱스를 가질 수하는 Client
에 속하는 제약을 제외하고 클라이언트 내의 단일의 제목을 그것은 동일한 세트 내의 형제 자매입니다.
예를 들어 Client
에 두 개가 아닌 두 개에 Title1
을 가질 수 있습니다. 이제 Client1
의 경우 Title1
이라는 두 번째 레코드가 필요하지만 다른 모든 레코드처럼 SetID
이 Title
인 경우에만 해당 레코드를 보유하고 싶습니다.
저는 SQL Azure를 사용하고 있습니다 만, 더 일반적으로 관심이 있습니다 (예 : 2008 R2/2012).
편집 :
테이블 구조는 변경할 수 없습니다. 이 방법은 이미 존재하며 그 뒤에 복잡한 비즈니스 계층이 있습니다. 만약 내가 이것을 고칠 수 있다면, 그렇다면 크고, 그렇지 않다면, 깨뜨릴 수 있습니다. 내가 질문을 받았다면
나는 당신의 고유 인덱스를해야 할 것 볼 수 없습니다 중복 된 정보를 허용하는 세 개의 열 인덱스의 일부가되기 위해 예를 들어 ID 열을 추가하는 경우에만이 문제가 해결 될 수 있다고 가정하지만 테이블을 변경할 수는 없습니다. – gotqn
열을 추가 할 수는 있지만 테이블을 두 개로 분할하는 등의 변경을 할 수는 없습니다. –
@gotqn. 고유 한 인덱스 일 필요는 없습니다. 그게 내가 속임수를 쓰고 있다고 생각한 것입니다. 단지 방법을 찾지 못했을뿐입니다! :) –