Se esegui le due istruzioni within a transaction
, eventuali errori comporteranno il rollback sia dell'inserimento che dell'aggiornamento.
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;
Se sono presenti nuove righe inserite nella tabella di origine dopo che sono state lette, potrebbe essere necessario eseguire nuovamente il blocco, con una condizione where modificata, se appropriato.