2017-09-13 13 views
0

3 열 : A, B, C이 있습니다. A은 pkid이고, BC은 Varchars입니다. 나는 이미 그런 제약을 썼다 : CONSTRAINT UNIQUE_DATA1 UNIQUE(B, C). 이것은 값 "x"와 "y"를 두 번 삽입하는 것을 막아 주지만, "x"와 "y"값이 이미 존재하면 "y"와 "x"의 삽입을 막고 싶습니다. 이 제약 조건을 적용 할 수있는 방법이 있습니까?Oracle 12 행 조합에 대한 고유 제한

create unique index unique_data2 (least(b,c), greatest(b,c)); 

두 값이 모두 null이 될 수 없다 경우에만 작동합니다 : 당신은 함수 기반 인덱스를 생성 할 수 있습니다

답변

1

. 그들이 할 수 있다면 :

create unique index unique_data2 
    (least(nvl(b,'~),nvl(c,'~')) 
    , greatest(nvl(b,'~),nvl(c,'~')) 
); 

여기서 '~'은 결코 b 또는 c의 실제 값이 아닐 것입니다.

+0

그들은 결코 null 일 수 없으며, 매력처럼 작동합니다! 고맙습니다! –