Si vous exécutez les deux instructions within a transaction
, tout échec entraînera l'annulation de l'insertion et de la mise à jour.
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;
Si de nouvelles lignes sont insérées dans la table source après leur lecture, vous devrez peut-être réexécuter le bloc, avec une condition où modifiée si nécessaire.