Einzelnen Beitrag anzeigen

lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#8

AW: Firebird Insert

  Alt 17. Nov 2020, 07:35
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

Geändert von lxo (17. Nov 2020 um 08:00 Uhr)
  Mit Zitat antworten Zitat