Bei den zu löschenden ist es ja klar. Für neue oder zu aktualisierende Datensätze bietet sich die UPDATE OR INSERT INTO-Syntax an (das ist allerdings eine Firebird-Spezialität, ob
MSSQL etwas ähnliches auch bietet, entzieht sich meiner Kenntnis). Dazu ist es aber wahrscheinlich etwas einfacher, der Detailtabelle einen künstlichen Primärschlüssel zu spendieren und die Kombination der anderen beiden Felder als UNIQUE zu definieren.