>데이터 베이스 >MySQL 튜토리얼 >MySQL의 ON DUPLICATE KEY UPDATE와 동일한 SQL Server가 있습니까?

MySQL의 ON DUPLICATE KEY UPDATE와 동일한 SQL Server가 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-15 18:41:11397검색

Is There an SQL Server Equivalent to MySQL's ON DUPLICATE KEY UPDATE?

SQL Server는 MySQL의 ON DUPLICATE KEY UPDATE와 유사한 기능을 제공합니까?

MySQL에서 ON DUPLICATE KEY UPDATE를 사용하면 자동 업데이트가 가능합니다. 삽입으로 인해 고유 인덱스나 기본 키에 값이 중복되는 경우 행 SQL Server에서 이 기능에 가장 가까운 것은 MERGE 문입니다.

MERGE를 사용하여 업데이트 또는 삽입

MERGE 문은 INSERT, UPDATE, 및 DELETE 문을 단일 작업으로 통합합니다. 다음 용도로 사용할 수 있습니다.

  • 지정된 조건과 일치하는 기존 행 업데이트
  • 일치하는 행이 없으면 새 행 삽입

다음의 경우 테이블에 행을 삽입하려고 시도하는 다음 쿼리를 고려해 보세요. 행이 아직 존재하지 않습니다.

INSERT INTO MyTable (Id, Name) VALUES (1, 'John Doe')

ID가 1인 행이 이미 존재하는 경우 기본 키 위반으로 인해 이 쿼리가 실패합니다. 그러나 MERGE를 사용하여 이 시나리오를 처리할 수 있습니다.

MERGE INTO MyTable WITH (HOLDLOCK) AS target
USING (SELECT 1 AS Id, 'John Doe' AS Name) AS source
(Id, Name)
ON (target.Id = source.Id)
WHEN MATCHED
  THEN UPDATE
  SET Name = source.Name
WHEN NOT MATCHED
  THEN INSERT (Id, Name)
  VALUES (source.Id, source.Name);

이 예에서 MERGE 문은 다음 작업을 수행합니다.

  • ID가 1인 행이 있는지 확인합니다.
  • 일치하는 행이 있으면 이름 열을 John으로 업데이트하세요. Doe.
  • 일치하는 행이 없으면 ID가 1이고 이름이 John Doe인 새 행을 삽입합니다.

WITH(HOLDLOCK) 절은 대상 테이블이 작업 중에 잠기는 것을 보장합니다. 동시 업데이트로 인해 데이터 일관성 문제가 발생하지 않도록 방지하는 작업입니다.

위 내용은 MySQL의 ON DUPLICATE KEY UPDATE와 동일한 SQL Server가 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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