레이블이 INSERT힌트인 게시물을 표시합니다. 모든 게시물 표시
레이블이 INSERT힌트인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 11일 토요일

https://youtu.be/b-IxbRmwpGE오라클 데이터 입력시 중복되는 경우 중복되지 않는 데이터만 입력, IGNORE_ROW_ON_DUPKEY_INDEX 힌트, DML Error Logging사용법(자바학원/오라클학원)

https://youtu.be/b-IxbRmwpGE오라클 데이터 입력시 중복되는 경우 중복되지 않는 데이터만 입력, IGNORE_ROW_ON_DUPKEY_INDEX 힌트, DML Error Logging사용법(자바학원/오라클학원)


http://ojc.asia/bbs/board.php?bo_table=LecHINT&wr_id=326 


오라클 데이터 입력시 중복되는 경우 중복되지 않는 데이터만 입력, IGNORE_ROW_ON_DUPKEY_INDEX 힌트, DM

오라클 데이터 입력시 중복되는 경우 중복되지 않는 데이터만 입력, IGNORE_ROW_ON_DUPKEY_INDEX 힌트, DML Error Logging사용법ORACLE HINT데이터 입력시 중복되는 경우 오류를 발생시키지 않고 중복되지 않는

ojc.asia

https://www.youtube.com/watch?v=RsswtJnUFP0&list=PLxU-iZCqT52DFRbLFQIgGUFp-5En2DYRG&index=27 




ORACLE HINT

 

 

데이터 입력시 중복되는 경우 오류를 발생시키지 않고 중복되지 않는 데이터만 입력

IGNORE_ROW_ON_DUPKEY_INDEX 힌트이용

DML Error Logging 이용

실습 : 오라클19C

 

자주하는 작업 중 하나는 INSERT… SELECT… 문을 이용하여 대량의 데이터를 INSERT 하는 일이다. 이 경우 키(Primary Key) 값이 중복되어 무결성 제약조건 오류가 발생할 수 있는데 이 때 INSERT문은 롤백 된다.

 

오라클 10g의 New Feature로 소개되었던 DML Error Logging을 이용하여 오류가 발생한 레코드를 별도의 로깅 테이블에 기록하고 에러 때문에 DML이 중지되는 것을 막을 수 있지만 사용하기에 번거롭다.  

 

오라클 10g의 DML Error Logging은 아래 URL에서 확인하자. 
http://ojc.asia/bbs/board.php?bo_table=Cyber&wr_id=17

 

Oracle 11g에서 새로 소개된 ignore_row_on_dupkey_index 힌트를 사용하면 쉽게 해결할 수 있는데, 데이터 키값이 중복되는 경우 오류를 발생시키지 않고 중복되지 않는 데이터만 입력할 수 있게 해준다.  아쉬운 점이라면 SINGLE INSERT문만 지원하고 UPDATE, DELETE, MERGE, MULTI INSERT 구문에서는 안 된다는 것이며 APPEND, PARALEL 힌트와 같이 사용하면 이 두 힌트가 무시되고 Direct Path Load는 지원하지 않는다. 
 

 

SQL> create table onj ( 
    id number constraint pk_onj primary key, 
    name varchar2(20) 
); 

SQL> insert into onj values (1, '1길동'); 
SQL> insert into onj values (2, '2길동'); 
SQL> insert into onj values (3, '3길동'); 

SQL> commit; 

SQL> select * from onj; 
 

        ID     NAME 
---------- -------------------- 
      1      1길동 
      2      2길동 
      3      3길동 

SQL> create table onj_old ( 
    id number primary key, 
    name varchar2(20) 
); 

SQL> insert into onj_old values (1, '1길동'); 
SQL> insert into onj_old values (4, '4길동'); 
SQL> insert into onj_old values (5, '5길동'); 

SQL> commit; 

-- onj_old의 내용을 onj 테이블로 insert하자. 1번 데이터가 중복되는 상황이다. 
SQL> insert into onj select * from onj_old;

1행에 오류: 
ORA-00001: 무결성 제약 조건(SCOTT.PK_ONJ)에 위배됩니다 

-- ignore_row_on_dupkey_index 힌트를 사용하자. 
SQL> SELECT a.index_name, a.column_name, b.visibility

  FROM  user_ind_columns a, user_indexes b

 WHERE  a.table_name = 'ONJ'

 AND a.index_name = b.index_name

 AND a.column_name = 'ID'
 

INDEX_NAME    COLUMN_NAME   VISIBLITY
----------------------------------------------------
PK_ONJ            ID               VISIBLE

SQL> insert /*+ ignore_row_on_dupkey_index(onj PK_ONJ)  */ into onj select * from onj_old; 
2 개의 행이 만들어졌습니다. 

SQL> commit; 

SQL> select * from onj; 

        ID     NAME 
---------- -------------------- 
        1     1길동 
        2     2길동 
        3     3길동 
        4     4길동 
        5     5길동


#IGNORE_ROW_ON_DUPKEY_INDEX, #DML에러로깅, #DML에러로그, #오라클동영상, #INSERT힌트, #오라클교육, #오라클학원, #SQL학원, #SQL교육, IGNORE_ROW_ON_DUPKEY_INDEX, DML에러로깅, DML에러로그, 오라클동영상, INSERT힌트, 오라클교육, 오라클학원, SQL학원, SQL교육, 
 

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...