Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Kopieren Sie Datensätze mit Auswahl einfügen und aktualisieren Sie dann die Attribute in derselben Datensatzgruppe

Wenn Sie die beiden Anweisungen within a transaction ausführen , führen alle Fehler dazu, dass sowohl die Einfügung als auch die Aktualisierung rückgängig gemacht werden.

insert into tgt..
select * from src
where <condition>
  and row_status <> 'copied'; --ignoring records after they have been copied once?

update src
set row_status = 'copied'
where <same_where_condition_as_before>

commit;

Wenn neue Zeilen in die Quelltabelle eingefügt wurden, nachdem sie gelesen wurden, müssen Sie den Block möglicherweise erneut ausführen, gegebenenfalls mit einer geänderten Where-Bedingung.