sql >> Base de Datos >  >> RDS >> Oracle

Copie registros con selección de inserción, luego actualice los atributos en el mismo conjunto de registros

Si ejecuta las dos declaraciones within a transaction , cualquier falla hará que tanto la inserción como la actualización se reviertan.

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 hay nuevas filas insertadas en la tabla de origen después de que se hayan leído, es posible que deba ejecutar el bloque nuevamente, con una condición de cambio donde, si corresponde.