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