>데이터 베이스 >MySQL 튜토리얼 >MERGE를 사용하여 SQL INSERT 작업에서 중복 레코드를 방지하는 방법은 무엇입니까?

MERGE를 사용하여 SQL INSERT 작업에서 중복 레코드를 방지하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-29 03:46:29431검색

How to Prevent Duplicate Records in SQL INSERT Operations Using MERGE?

SQL INSERT 작업에서 중복 레코드 완화

많은 데이터베이스 시스템은 중복 레코드가 테이블에 삽입되는 것을 방지하는 메커니즘을 제공합니다. 이 경우 다음 필드가 포함된 "Delegates"라는 테이블에 중복 삽입을 방지해야 합니다.

  • ID(자동 증가, 기본)
  • MemberNo
  • FromYr
  • ToYr

다음 쿼리를 사용하여 삽입을 수행하고 있습니다.

<code class="sql">INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)</code>

그러나 이 접근 방식은 사용자가 실수로 삽입하는 것을 막지는 못합니다. 동일한 회원 및 연도에 대한 중복 레코드.

MERGE를 사용한 솔루션

중복 삽입을 방지하려면 MERGE 문을 사용하면 됩니다. 두 테이블 또는 테이블과 값 집합 간의 비교를 기반으로 하는 작업(삽입, 업데이트 또는 삭제).

이 경우 MERGE 문을 다음과 같이 사용할 수 있습니다.

<code class="sql">MERGE INTO Delegates D
USING (values(@MemNo, @FromYr,@ToYr)) X ([MemNo],[FromYr],[ToYr])
ON (insert unique key join)
WHEN NOT MATCHED BY TARGET THEN
INSERT ([MemNo],[FromYr],[ToYr]))
VALUES (X.[MemNo],X.[FromYr],X.[ToYr]);</code>

이 문은 다음을 수행합니다.

  • USING 절은 기존 레코드에 삽입하거나 비교할 값을 지정합니다.
  • ON 절은 기존 레코드를 고유하게 식별하는 조인 조건을 정의합니다. 기록. 이 경우 적절한 필드 조합을 사용하여 고유성을 보장할 수 있습니다(예: MemberNo 및 FromYr).
  • WHEN NOT MATCHED BY TARGET 절은 일치하는 레코드가 없는 경우에만 삽입 작업이 발생하도록 지정합니다.
  • VALUES 절은 일치하는 레코드가 없을 경우 삽입할 값을 제공합니다.

위 내용은 MERGE를 사용하여 SQL INSERT 작업에서 중복 레코드를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.