martes, 30 de noviembre de 2021

[Oracle SQL Developer] - Como deshacer un Commit Delete

 

Fuente: sql - Rollback a committed transaction - Stack Overflow

Respuesta:

No se puede revertir lo que ya se ha confirmado. Lo que puede hacer, en esta situación particular, como una de las opciones más rápidas, es emitir una consulta de flashback contra una tabla de la que ha eliminado filas e insertarlas de nuevo. Aquí hay un ejemplo simple:

Nota:El éxito de esta operación depende del valor (predeterminado 900 segundos) del parámetro - período de tiempo (se puede reducir automáticamente) durante el cual la información de deshacer se conserva en el espacio de tabla de deshacer. undo_retention

/* our test table */
create table test_tb(
   col number
);
/* populate test table with some sample data */
insert into test_tb(col)
   select level
     from dual
  connect by level <= 2;

select * from test_tb;

COL
----------
         1
         2
/* delete everything from the test table */    
delete from test_tb;

select * from test_tb;

no rows selected

Inserte las filas eliminadas hacia atrás:

/* flashback query to see contents of the test table 
  as of specific point in time in the past */ 
select *                                   /* specify past time */
  from test_tb as of timestamp timestamp '2013-11-08 10:54:00'

COL
----------
         1
         2
/* insert deleted rows */
insert into test_tb
   select *                                 /* specify past time */  
    from test_tb as of timestamp timestamp '2013-11-08 10:54:00'
   minus
   select *
     from test_tb


 select *
   from test_tb;

  COL
  ----------
          1
          2