Om du kör de två satserna within a transaction
, kommer eventuella fel att göra att både infogningen och uppdateringen återställs.
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;
Om det finns nya rader infogade i källtabellen efter att de har lästs, kan du behöva köra blocket igen, med ett ändrat villkor om det är lämpligt.