In Oracle, verwende ich eine MERGE-Anweisung wie:Kann MERGE Update auf beiden Tabellen?
merge into live_table l
using (
select *
from staging_table
where merged = 'N'
) s
on (i.id = s.id)
when matched then
update l.description = s.description
when not matched then
insert (l.id, l.description)
values (s.id, s.description)
;
Die Staging-Tabelle enthält auch eine „verschmolzen“ Flagge, die ich nach der Zusammenführung auf ‚Y‘ aktualisieren möchten.
ich dachte ich, das mit einem zusätzlichen Update (nach der Zusammenführung) wie kombinieren könnte:
update staging_table
set merged = 'Y'
where id in (select id
from live_table)
;
aber aktualisiert auch die Flagge auf Datensätze, die bereits in früheren Transaktionen zusammengeführt wurden. Eine Problemumgehung besteht darin, dies als eine Schleife zu schreiben, die die Einfügungen/Aktualisierungen einzeln behandelt, aber das würde die Leichtigkeit der MERGE-Anweisung besiegen.
Wie kann ich das zusammengefügte Flag so aktualisieren, dass ich sicher bin, dass nur die Zeilen aktualisiert werden, die von der Merge-Anweisung betroffen sind?
Schon gedacht. Danke für die Bestätigung! –