반응형
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
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
반응형
'Programing' 카테고리의 다른 글
Firebase Analytics 맞춤 이벤트 매개 변수 (0) | 2020.12.31 |
---|---|
Maven에서 단일 테스트 만 건너 뛰는 방법이 있습니까? (0) | 2020.12.31 |
'모든 CPU'.NET 어셈블리에서 x86 CLR 강제 실행 (0) | 2020.12.31 |
XSLT 파일을 어떻게 실행합니까? (0) | 2020.12.31 |
32 비트 머신이 얼마나 많은 메모리에 액세스 할 수 있습니까? (0) | 2020.12.31 |