Gehe mal davon aus, dass WERKNR, WIRKSTOFF einen eindeutigen Wert darstellen.
Mit etwas in der Art könnte dann das Löschen etwas einfacher werden:
SQL-Code:
delete from Tabelle_Werk2 w2
where not exists (
select 1 from Tabelle_Werk1 w1
where w1.WERKNR = w2.WERKNR
and w1.WIRKSTOFF = w2.WIRKSTOFF
)
Du brauchst aber immer zwei Statements, das für's Insert bzw. Update und das zum Löschen. Eine Möglichkeit, dies alles in einem Statement umzusetzen, ist mir nicht bekannt.
Bei meiner Recherche bin ich darauf gestoßen, dass es z.B. bei
MSSQL "merge when not matched by source"gibt.
Nur leider gibt es das bei Firebird nicht und soll wohl auch nicht implementiert werden.
http://tracker.firebirdsql.org/browse/CORE-2515
Ich habe in einem Forum dafür trotzdem eine gute Lösung gefunden.
https://www.sql.ru/forum/1323218/mer...ched-by-source
Ich habe beim "Firbird tracker" ein Ticket zu dem Thema nochmal angelegt. Für alle die es vielleicht interessiert.
http://tracker.firebirdsql.org/browse/CORE-6448