-
MySQL의 INSERT IGNORE을 Oracle에서 구현하기DataBase/Oracle 2018. 8. 17. 15:31
중복키 관리를 위한 function으로 MySQL에서는 INSERT IGNORE이라는 내장함수를 제공한다.
INSERT IGNORE은 primary key가 중복될 경우, 데이터를 insert하지 않는다.
0 row affected라는 로그만 반환할 뿐.
이 함수를 Oracle에서 적용해보려고 찾다가 StackOverFlow에서 좋은 해결법을 찾아서 공유한다.
MEGER INTO를 활용한 방법인데,
아래처럼 만들어주면 된다. mybatis를 사용하고 있으므로 mybatis식으로 작성했다.
12345678910111213141516MERGE INTO '테이블 명' demo_tableUSING (SELECT #{PK 파라미터} AS pk_column,#{인서트할 파라미터들} AS demo_table_columns(인서트할 사용 테이블의 컬럼들)FROM dual) dummyON (demo_table.pk_column = dummy.pk_column)WHEN NOT MATCHED THENINSERT(pk_column,demo_table_columns)VALUES(dummy.pk_column,dummy.demo_table_columns)cs 위와 같이 사용하면 MySQL의 INSERT IGNORE처럼 중복키가 발생하면 INSERT를 하지 않는다.
PK가 동일할(중복될) 경우 WHEN MATCHED THEN 로직을 타겠지만, 작성된 쿼리가 없으니 아무 동작이 발생하지 않는다.
출처: 스택오버플로우 - click
'DataBase > Oracle' 카테고리의 다른 글
[Oracle] ORA-01704: 문자열이 너무 깁니다 "string literal too long" (0) 2018.08.22 [Oracle] 컬럼에 html 데이터를 insert 혹은 update하는 방법 (0) 2018.08.22 MySQL의 LIMIT 기능을 Oracle에서 ROWNUM을 이용해 구현 (0) 2018.08.13 on duplicate key update(MySQL) Vs merge into(Oracle) 사용법 (0) 2018.08.10 Oracle(오라클) auto commit 설정하기 (0) 2018.08.10