봉봉의 개인 블로그
2018-06-01(MSSQL merge) 본문
보통 수정기능이 있는 화면을 구현하다보면 신규는 insert 수정은 update 문을 사용해야한다.
또 Row가 있는지 없는지 확인하는 select 쿼리까지 필요하다.
merge into 문을 사용하면 하나의 쿼리로 가능하다.
예문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | merge into tb_tbl aa using(select :v_user_id as user_id,:v_key_col1 as key_col1 from dual) bb on (aa.key_col1 = bb.key_col1) when matched then update key_col1 = bb.key_col1, modifier = bb.user_id, mod_ddtt = sysdate when not matched then insert ( modifier, mod_ddtt, register, reg,ddtt, key_col1 ) values ( bb.modifier, bb.mod_ddtt, bb.user_id, sysdate, bb.key_col1 ) | cs |
구문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | merge into tb_tbl aa using(서브쿼리 결과가 NULL 이면 에러가 발생한다.) bb on (aa.key_col1 = bb.key_col1) -- 키값이 테이블에 있는지 비교합니다. when matched then --테이블에 이미 키값이 있다면 update update key_col1 = bb.key_col1, modifier = bb.user_id, mod_ddtt = sysdate when not matched then --테이블에 키 값이 없을때 insert insert ( modifier, mod_ddtt, register, reg,ddtt, key_col1 ) values ( bb.modifier, bb.mod_ddtt, bb.user_id, sysdate, bb.key_col1 ) | cs |
출처 : http://javafactory.tistory.com/534
참고 : http://www.gurubee.net/lecture/2225
'입사후 공부한내용' 카테고리의 다른 글
2018-09-05(JavaScript 클래스를 정의하는 3가지 방법) (0) | 2018.09.06 |
---|---|
2108-07-26(아키텍처 패턴 요약) (0) | 2018.07.26 |
2018-04-27(Outer Apply) (0) | 2018.04.27 |
2018-04-25(함수(Function) VS 메소드(Method)) (0) | 2018.04.25 |
2018-03-02(JSTL fn 함수) (0) | 2018.03.02 |
Comments