[USING ON 조건] 일치여부에따라 INSERT 또는 UPDATE, DELETE도 가능한 문법이다.

DELETE는 사용해보지 않았지만 비슷할것같다.

 

현재 진행중인 프로젝트에서 사용할 일이 생겨

상황별 UPDATE, INSERT 정상 적용되는것 확인후 작성

 

=============================

SQL

=============================

MERGE INTO [테이블명] AS a
USING (SELECT 1 AS dual) AS b 
      ON (a.SEQ = #{seq})
 WHEN MATCHED THEN
 UPDATE
        SET  CONTENT = #{content}

 WHEN NOT MATCHED THEN
 INSERT(TITLE

             ,  CONTENT

             ,  CREATE_AT)
 VALUES( #{title}

              ,  #{content}

              ,  #{createAt});

=============================

설명

=============================

[테이블명] -> UPDATE또는 INSERT할 테이블

[ USING (SELECT 1 AS dual) AS b ] -> 추가테이블 사용 안할거기때문에 잡아놓은 더미테이블

[ ON (a.SEQ = #{seq}) ] -> 조건식

[ WHEN MATCHED THEN ] -> 조건식이 참일때. 라는 뜻

[ WHEN NOT MATCHED THEN ] -> 조건식이 거짓일때. 라는 뜻

*위 쿼리를 보면 알겠지만 UPDATE, INSERT문에는 테이블명을 따로 기입하지 않고 MERGE INTO 옆에만 한번 작성한다.

=============================

'DB' 카테고리의 다른 글

TooManyResultException 에러 해결  (0) 2024.05.28
[Dbeaver] MariaDB 드라이버 설치불가  (0) 2024.05.26

+ Recent posts