Se você executar as duas instruções
within a transaction
, quaisquer falhas farão com que a inserção e a atualização sejam revertidas. 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 houver novas linhas inseridas na tabela de origem depois de lidas, talvez seja necessário executar o bloco novamente, com uma condição where alterada, se apropriado.