Oracle DB의 조건부 고유 제약 조건
다른 열 값에 따라 열[속성]에 고유한 제약 조건을 적용해야 하는 상황이 있습니다.
예를 들어 테이블(ID, EID, 이름, ISDeleted)과 같은 테이블이 있습니다.
ISDeleted는 null 또는 'y'(활성 또는 삭제됨) 값만 가질 수 있으며, I는 ISDeleted = null일 때만 EID, ISDeleted에 고유한 제약 조건을 만들고 싶습니다. 동일한 ID의 삭제된 레코드가 여러 개 있어도 상관 없기 때문입니다.EID는 null 값을 가질 수 있습니다.
저는 이를 위해 Oracle DB를 사용하고 있습니다.
제약 조건을 만들 수 없습니다.그러나 고유한 기능 기반 인덱스를 만들 수 있습니다.이는 Oracle이 NULL 값을 인덱싱하지 않는다는 점을 활용합니다. 즉, 다음과 같은 모든 행이isDeleted
이라NOT NULL
인덱스에 포함되지 않으므로 고유 제약 조건이 적용되지 않습니다.
CREATE UNIQUE INDEX one_not_deleted
ON table_name( (CASE WHEN isDeleted IS NULL
THEN eid
ELSE null
END) );
언급URL : https://stackoverflow.com/questions/10317774/conditional-unique-constraint-in-oracle-db
'programing' 카테고리의 다른 글
다른 공간에서 이름이 같은 변수 사용 (0) | 2023.06.21 |
---|---|
윈도우에서 도커 mongo 이미지를 시작할 수 없습니다. (0) | 2023.06.21 |
SELECT를 사용할 수 없는 이유...집계 기능이 있는 업데이트의 경우? (0) | 2023.06.21 |
R의 군집 분석: 최적 군집 수 결정 (0) | 2023.06.21 |
특정 경로에 Xlsxwriter 파일을 저장하는 방법은 무엇입니까? (0) | 2023.06.21 |