Hvis du kører de to sætninger within a transaction
, vil eventuelle fejl medføre, at både indsættelsen og opdateringen rulles tilbage.
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;
Hvis der er indsat nye rækker i kildetabellen, efter at de er blevet læst, skal du muligvis køre blokken igen, med en ændret tilstand, hvis det er relevant.