Programing

SQL Server는 중복 키 업데이트시 MySQL과 같은 것을 제공합니까?

lottogame 2020. 12. 31. 07:52
반응형

SQL Server는 중복 키 업데이트시 MySQL과 같은 것을 제공합니까?


MySQL에서는 ON DUPLICATE KEY UPDATE 를 지정 하고 UNIQUE 인덱스 또는 PRIMARY KEY에 중복 값이 ​​발생할 수있는 행이 삽입되면 이전 행의 UPDATE가 수행됩니다. 예를 들어, 열 a가 UNIQUE로 선언되고 값 1을 포함하는 경우 다음 두 명령문은 동일한 효과를 갖습니다.

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;

나는 T-SQL에서 비슷한 것을 발견했다고 생각하지 않습니다. SQL Server는 MySQL의 ON DUPLICATE KEY UPDATE와 유사한 기능을 제공합니까?


DUPLICATE KEY UPDATE에 해당하는 것은 없지만 MERGE 및 WHEN MATCHED가 작동 할 수 있습니다.

MERGE를 사용하여 데이터 삽입, 업데이트 및 삭제


이 페이지의 답변에 실제 쿼리의 예가 포함되어 있지 않다는 사실에 놀랐습니다.

데이터를 삽입 한 다음 중복을 처리하는 더 복잡한 예

MERGE
INTO MyBigDB.dbo.METER_DATA WITH (HOLDLOCK) AS target
USING (SELECT
    77748 AS rtu_id
   ,'12B096876' AS meter_id
   ,56112 AS meter_reading
   ,'20150602 00:20:11' AS local_time) AS source
(rtu_id, meter_id, meter_reading, time_local)
ON (target.rtu_id = source.rtu_id
  AND target.time_local = source.time_local)
WHEN MATCHED
  THEN UPDATE
      SET meter_id = '12B096876'
         ,meter_reading = 56112
WHEN NOT MATCHED
  THEN INSERT (rtu_id, meter_id, meter_reading, time_local)
      VALUES (77748, '12B096876', 56112, '20150602 00:20:11');

SQL Server 2008에는 TSQL의 일부로이 기능이 있습니다.
여기에서 MERGE 문에 대한 문서를 참조하십시오-http: //msdn.microsoft.com/en-us/library/bb510625.aspx


SQL Server 2000 이후에는 트리거 대신에 원하는 기능을 수행 할 수있는 개념이 있습니다.이면에 숨어있는 불쾌한 트리거가있을 수 있습니다.

"삽입 또는 업데이트 하시겠습니까?"섹션을 확인하십시오.

http://msdn.microsoft.com/en-us/library/aa224818(SQL.80).aspx

참조 URL : https://stackoverflow.com/questions/1197733/does-sql-server-offer-anything-like-mysqls-on-duplicate-key-update

반응형