블로그 구경다니다가 11g에서 쓸만한 hint 하나 확인해서 공유합니다.
구구절절한 설명 보다 아래의 예를 보는게 가장 이해하기 쉽겠네요.
However, Oracle11g allows us to use the IGNORE_ROW_ON_DUPKEY_INDEX hint, which will silently deal with the unique constraint violation errors by simply ignoring and not inserting any row in which the unique values already exist in the table.
SQL> insert into radiohead select rownum, 'OK COMPUTER' from dual connect by level <= 12;
insert into radiohead select rownum, 'OK COMPUTER' from dual connect by level <= 12
*
ERROR at line 1:
ORA-00001: unique constraint (BOWIE.RADIOHEAD_PK_I) violated
SQL> insert /*+ ignore_row_on_dupkey_index(radiohead,radiohead_pk_i) */ into radiohead select rownum,
'OK COMPUTER' from dual connect by level <= 12;
2 rows created.
SQL> commit;
Commit complete.
위의 예를 보면 알겠지만 unique key 값이 없는 row에 대해서만 insert가 발생합니다. 에러는 생략되고요..
즉 새로 입력되는 값이 기존의 unique 값과 constraint violation이 발생한다면 무시되는 거죠..
이 hint는 update에는 사용할 수 없습니다. 또 parallel DML과 APPEND mode일 경우에는 무시됩니다.
몇몇 요구사항에 맞지 않는다면 ORA-38912, ORA-38915, ORA-38913이 발생합니다.
자세한 내용은 아래 메뉴얼에서...
'Oracle Database' 카테고리의 다른 글
Oracle의 특정 process가 CPU를 많이 먹을때: kill 대신 suspend (0) | 2011.01.05 |
---|---|
Oracle UTL_FILE을 이용한 데이터 Unloading의 간단한 예제 (0) | 2010.12.28 |
Oracle Interval Partition drop할때 ORA-14758 발생 (0) | 2010.12.08 |
Oracle Global Temporary Table (0) | 2010.12.08 |
오라클 테스트 환경 만들기 (0) | 2010.11.29 |