Ако изпълните двата извлечения within a transaction
, всички неуспехи ще доведат до връщане назад както на вмъкването, така и на актуализацията.
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;
Ако има нови редове, вмъкнати в изходната таблица, след като са били прочетени, може да се наложи да изпълните блока отново, с променено условие, където е подходящо.