sql merge 예제

예제를 계속 사용할 예정이지만 이번에는 변경 내용을 기록하고 변경 내용을 요약합니다. 이 예제에서는 노드 테이블을 만들 수 있는 사람 및 도시 및 가장자리 테이블 이있습니다. lives에서 MERGE 문을 사용 하 여 가장자리와 가장자리가 이미 사람과 도시 간에 없는 경우 새 행을 삽입합니다. 가장자리가 이미 있는 경우, 당신은 단지 업데이트 스트리트 주소 속성에 lives에 가장자리에서. MERGE 문은 기본적으로 지정한 조건과 원본의 데이터가 대상에 이미 있는지 여부에 따라 원본 결과 집합의 데이터를 대상 테이블로 병합합니다. 새 SQL 명령은 레코드의 존재 여부에 따라 조건부 INSERT, UPDATE 및 DELETE 명령의 시퀀스를 단일 원자성 문으로 결합합니다. 새 MERGE 명령은 다음과 같습니다: OUTPUT 절 자체는 먼저 기본 제공 $action 변수를 지정하여 세 nvarchar(10) 값 중 하나를 반환합니다. 변수는 MERGE 문에서만 사용할 수 있습니다. 대상 테이블의 각 열에 대해 열 접두사 집합(DELETED 및 INSERTED)으로 변수를 따릅니다. 열 접두사 뒤에는 관련된 열의 이름이 표시됩니다. 예를 들어 삭제됨을 포함합니다. 제목 ID 및 삽입되었습니다. 대상 테이블의 TitleID 열에 대한 TitleID입니다.

열 접두사를 지정한 후 출력된 값을 @MergeOutput 변수에 저장하도록 지정하는 INTO 하위 절을 포함합니다. 대상 테이블에 삽입할 값을 지정합니다. 원본 테이블이 있는 조인 결과에서 대상 테이블에 대한 작업을 삽입, 업데이트 또는 삭제합니다. 예를 들어 다른 테이블에 있는 차이점에 따라 한 테이블에 행을 삽입, 업데이트 또는 삭제하여 두 테이블을 동기화합니다. BookID 값이 3(위대한 개츠비)인 책의 원래 원본 과 대상 테이블 모두에서 수량 값이 0이라는 것을 알았을 것입니다. 수량 값이 대상 테이블과 원본 테이블 모두에서 0인 책을 BookInventory 테이블에서 제거한다고 가정합니다. 다음 예제와 같이 MATCH 문에 두 번째 MATCHED 절을 추가하여 이러한 행을 쉽게 삭제할 수 있습니다. 내가 추가 할 유일한 것은 WHEN 절에 더 많은 조건자와 예제입니다 – 일반적인 데이터 웨어하우징 응용 프로그램에서 ETL 주기 동안 종종 대상 테이블에서 INSERT, UPDATE 및 DELETE 작업을 수행해야합니다. 소스 테이블입니다.

예를 들어 제품 차원 테이블에는 제품에 대한 정보가 있으며 이 테이블을 원본 테이블의 제품에 대한 최신 정보와 동기화해야 합니다. 업데이트된 제품 목록으로 대상 테이블을 새로 고치거나 조회를 수행하려면 별도의 INSERT, UPDATE 및 DELETE 문을 작성해야 합니다. 언뜻 보기에는 똑바로 앞으로 나아갈 것 같지만, 매우 자주 또는 여러 테이블에서 수행했을 때 번거로워지며 이 접근 법으로 성능이 크게 저하됩니다. 이 팁에서는 MERGE 문을 사용하는 방법을 살펴보고 한 번의 패스로 이 작업을 수행합니다. 위의 예제에서 행이 소스에 없는 경우(소스와 일치하지 않을 때) 대상 테이블에서 행을 삭제하고 있습니다. 내가 만난 다중 일치 / 일치하지 않는 병합에 대한 가장 좋은 예와 설명. 잘 했어요! 다음 예제에서는 MERGE를 사용하여 행을 업데이트하거나 삽입하여 AdventureWorks2012 데이터베이스의 SalesReason 테이블을 수정합니다. 원본 테이블의 NewName 값이 대상 테이블의 Name 열에 있는 값과 일치하면 (SalesReason) ReasonType 열이 대상 테이블에서 업데이트됩니다.

NewName 값이 일치하지 않으면 원본 행이 대상 테이블에 삽입됩니다. 원본 테이블은 Transact-SQL 테이블 값 생성기를 사용하여 원본 테이블에 대해 여러 행을 지정하는 파생 테이블입니다. 파생 테이블에서 테이블 값 생성자 사용에 대한 자세한 내용은 테이블 값 생성자(Transact-SQL)를 참조하십시오.

カテゴリー: 未分類   パーマリンク

コメントは受け付けていません。