Estoy agregando una clave foránea a una tabla, y eliminando cualquier fila que viole el FK, copiándola en una tabla ModifiedTable_invalid. Como parte del script, tengo el siguiente comando MERGE:
MERGE ModifiedTable t1
USING TargetTable tt
ON t1.JoinColumn = tt.JoinColumn
WHEN MATCHED THEN
UPDATE SET t1.FkColumn = tt.FkSource
WHEN NOT MATCHED BY SOURCE THEN DELETE
OUTPUT DELETED.* INTO ModifiedTable_invalid;
Sin embargo, este comando parece estar insertando CADA fila de ModifiedTable en ModifiedTable_invalid, no solo las eliminadas por el comando MERGE. ¿Qué está pasando y cómo consigo que solo coloque las filas eliminadas en ModifiedTable_invalid?
fuente
DELETED.*
?