[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 |