티스토리 뷰
원본 테이블과의 조인 결과를 기반으로 대상 테이블에서 삽입, 업데이트 또는 삭제 작업을 실행한다.
📌 쿼리 구조
target_table : MERGE 문의 WHEN 절에 지정된 삽입, 업데이트 또는 삭제 작업의 대상
table_source : target_table의 데이터 행과 일치하는 데이터 원본을 지정한다. 서브쿼리 또는 다른 테이블 SELECT 쿼리가 들어갈 수 있다.
보통 MERGE문은 행이 없는 경우 행을 삽입, 행이 일치하지 않는 경우 행을 업데이트하는 작업에 많이 사용한다.
📌 WHEN MATCHED
최대 두 개의 WHEN MATCHED 절을 사용할 수 있다.
두 개의 WHEN MATCHED 절을 사용할 때 주의가 필요하다.
1. 첫번째 절에 AND 조건을 주어야 한다. 예 : WHEN MATCHED AND ~ THEN 조건을 만족할 때 실행할 쿼리
두 번째 WHEN MATCHED 절은 첫 번째 WHEN MATCHED 절이 적용되지 않은 경우에만 적용된다.
2. 하나는 UPDATE 동작을 지정해야 하고 다른 하나는 DELETE 동작을 지정해야 한다.
📌 WHEN NOT MATCHED & NOT MATCHED BY SOURCE
WHEN NOT MATCHED 절은 target_table에 행이 삽입되도록 지정한다. 즉, INSERT 쿼리만 사용 가능하다.
target_table의 데이터를 지우거나 갱신하고 싶을 때는 WHEN NOT MATCHED BY SOURCE 절을 사용해야 한다.
최대 두개의 WHEN NOT MATCHED BY SOURCE 절을 사용할 수 있다.
하나는 UPDATE, 하나는 DELETE 동작을 지정해야 한다.
📌 REFERENCE
https://docs.microsoft.com/ko-kr/sql/t-sql/statements/merge-transact-sql?view=sql-server-ver16
'dev_note > TIL' 카테고리의 다른 글
C# 문법 공부하기 (0) | 2022.07.19 |
---|---|
MSSQL APPLY 연산자 알아보기 (0) | 2022.07.14 |
persist 후 detach 했는데 데이터가 INSERT된다? (0) | 2022.06.30 |
업로드 파일 사이즈 제한하기( jQuery ) (0) | 2022.06.27 |
ASP.NET Authorize Header에 access token 넣기 (0) | 2022.06.27 |
- Total
- Today
- Yesterday
- Nullable
- 빌더 패턴
- C# 문법
- ASP.NET
- 고아 객체
- SpringBoot
- spring boot
- Spring
- OWIN
- 영속성
- orphanRemoval
- Java
- 스프링MVC
- JavaScript
- @Modifying
- uploadfive
- jQuery
- JpaRepository
- 다이내믹 프록시
- 스프링
- 토비의 스프링
- MSSQL
- c#
- 자바의 정석
- 준영속
- Effective Java
- JPA
- DataAnnotation
- default interface
- 스프링 부트 테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 | 29 | 30 | 31 |