DataBase/Oracle
on duplicate key update(MySQL) Vs merge into(Oracle) 사용법
희랍인 조르바
2018. 8. 10. 16:48
위의 두 기능은 insert를 하려는데 이미 데이터가 있다면 update를 할 수 있는 function이다.
테이블 하나를 사용하는 것만 정리해둬야겠다.(아직까진 테이블 하나씩만 사용하고 있어서)
MySQL의 경우,
1 2 3 4 5 6 7 8 9 10 11 12 | INSERT INTO demo_table --테이블명 ( company_seq, --primary key company_name, company_emp_name ) VALUES( 9999, 'tistory', '조르바' )ON DUPLICATE KEY UPDATE -- primary key가 중복일 경우, 해당 primary row에 update company_emp_name = '초콜릿' | cs |
Oracle의 경우,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | MERGE INTO demo_table --테이블명 USING dual --원래는 같이 사용할 테이블이지만, 테이블 하나만 사용하면 dual로 설정 ON (company_seq = '9999') -- join할 primary key를 조건식으로 넣어준다. 원래는 조건식이 들어갈 자리. WHEN MATCHED THEN -- primary key가 중복될 경우 처리할 쿼리 UPDATE SET company_emp_name = '초콜릿' WHEN NOT MATCHED THEN -- primary key가 중복되지 않을 경우 처리할 쿼리 INSERT( company_seq, --primary key company_name, company_emp_name ) VALUES( 9999, 'tistory', '조르바' ) | cs |
짠~ 위의 소스처럼 사용하면 된다.