해상도가 충분하지 않은 경우 고유 한 기능 기반 색인을 만들 수 있습니다.
예 :
SQL> create table t (id,col,deleted_date)
2 as
3 select 1, 99, null from dual union all
4 select 2, 99, date '2009-06-22' from dual
5/
Tabel is aangemaakt.
SQL> alter table t add constraint t_pk primary key (id)
2/
Tabel is gewijzigd.
SQL> alter table t add constraint t_uk1 unique (col,deleted_date)
2/
Tabel is gewijzigd.
이 다니엘 기재된 해결책이다. 이 경우
SQL> insert into t values (3, 99, date '2009-06-22')
2/
insert into t values (3, 99, date '2009-06-22')
*
FOUT in regel 1:
.ORA-00001: unique constraint (RWK.T_UK1) violated
기반으로 고유 한 기능을 사용 : (여기에만 날짜 부분을 사용하고 있습니다) 두 개의 행이 동일한 시간에 삭제 될 가능성이 이제까지있는 경우,이 솔루션은 충분하지 않습니다 인덱스 :
SQL> alter table t drop constraint t_uk1
2/
Tabel is gewijzigd.
SQL> create unique index i1 on t (nvl2(deleted_date,null,col))
2/
Index is aangemaakt.
SQL> insert into t values (3, 99, date '2009-06-22')
2/
1 rij is aangemaakt.
감사 롭.
남자, 나는 이것을 생각하려고 애 쓰고있었습니다! 고마워, 그건 내 생각에 괜찮을거야 – Mark