iscomar001
10/22/2015 - 10:58 PM

Merge

Merge

CREATE TABLE #tmpTableSRC(id INT, value varchar(100))
CREATE TABLE #tmpTableTARGET(id INT, value varchar(100))

TRUNCATE TABLE #tmpTableSRC
TRUNCATE TABLE #tmpTableTarget

INSERT INTO #tmpTableTARGET
SELECT 1,'CADENA1' UNION ALL
SELECT 2,'CADENA2' UNION ALL
SELECT 3,'CADENA3'


INSERT INTO #tmpTableSRC
SELECT 2,'CADENA2_UPDATED' UNION ALL
SELECT 4,'CADENA4_NEW'

SELECT * FROM #tmpTableTarget
SELECT * FROM #tmpTableSRC

MERGE #tmpTableTarget as tgt
USING(SELECT id,value FROM #tmpTableSRC) as src(id,value)
ON ( tgt.id = src.id )
WHEN MATCHED AND tgt.value <> src.value THEN --UPDATE SI EXISTE ( AND OPTIONAL)
	UPDATE SET value = src.value
WHEN NOT MATCHED BY TARGET THEN --INSERTA SI NO EXISTE LA LLAVE EN EL DESTINO
	INSERT (id,value)
	VALUES(src.id,src.value)
WHEN NOT MATCHED BY SOURCE THEN--ELIMINA SI NO EXISTE LLAVE EN EL ORIGEN
	DELETE	
OUTPUT $action,INSERTED.*,DELETED.*	; --MUESTRA OPERACIONES CREADAS