Oracle
 sql >> Database >  >> RDS >> Oracle

Copia i record con inserisci select, quindi aggiorna gli attributi nello stesso set di record

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.