복합 기본 키가있는 테이블 (SQL Server 2008)이 있습니다. 나는이 문제?SQL Server Management Studio - 복합 기본 키
insert into myTable values ('A','B')
insert into myTable values ('B','A')
내가 UNIQUE 제한 및 WITH_IGNORE_DUP_KEYS와 시도를 방지 할 수 있지만 그것을 해결할 수있는 방법.
미리 감사드립니다.
복합 기본 키가있는 테이블 (SQL Server 2008)이 있습니다. 나는이 문제?SQL Server Management Studio - 복합 기본 키
insert into myTable values ('A','B')
insert into myTable values ('B','A')
내가 UNIQUE 제한 및 WITH_IGNORE_DUP_KEYS와 시도를 방지 할 수 있지만 그것을 해결할 수있는 방법.
미리 감사드립니다.
는, 하나 개의 솔루션은 "작은"사람이 항상 첫 번째 컬럼에 저장되도록 값을 삽입 강제하는 것입니다 :
alter table myTable add constraint chk_pk
check (col1_1 <= col_2);
그렇게하지 않으면 삽입시 값의 특별한 "순서 지정"을 강요하고 싶지 않으므로) 계산 된 열 두 개를 정의하고 고유 한 색인을 작성해야합니다.
ALTER TABLE myTable ADD
min_pk AS case when col_1 < col_2 then col_1 else col_2 end,
max_pk AS case when col_1 > col_2 then col_1 else col_2 end;
CREATE UNIQUE INDEX idx_unique_pk ON myTable (min_pk, max_pk);
은 내가 조합 'B'와 'A'는 모두 열
Declare @t1 table(col1 varchar(2),col2 varchar(2))
insert into @t1 values('A','B')
if not exists(select col1 from @t1 where ((col1='B' or Col1='A') and (col2='B' or Col2='A')))
insert into @t1 values('B','A')
select * from @t1
에 존재하거나 제약 조건을 정의 할 수있는 경우 삽입하기 전에 확인할 수 있다고 생각합니다.
고마워. SQL 서버 함수 기반 인덱스를 허용하지 않기 때문에
고맙습니다. – Docu