Ich füge einer Tabelle einen Fremdschlüssel hinzu, entferne alle Zeilen, die gegen die FK verstoßen, und kopiere sie in eine ModifiedTable_invalid-Tabelle. Als Teil des Skripts habe ich den folgenden MERGE-Befehl:
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;
Dieser Befehl scheint jedoch JEDE Zeile aus ModifiedTable in ModifiedTable_invalid einzufügen, nicht nur diejenigen, die mit dem Befehl MERGE gelöscht wurden. Was ist los und wie kann ich nur die gelöschten Zeilen in ModifiedTable_invalid einfügen?
DELETED.*
?