Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wycofaj zadeklarowaną transakcję

Nie możesz wycofać tego, co już zostało zatwierdzone. W tej konkretnej sytuacji, jako jedną z najszybszych opcji, możesz wykonać kwerendę flashback względem tabeli, z której usunięto wiersze i wstawić je z powrotem. Oto prosty przykład:

Uwaga :Powodzenie tej operacji zależy od wartości (domyślnie 900 sekund) undo_retention parametr - okres czasu (może być automatycznie skrócony), podczas którego informacja o cofnięciu jest przechowywana w przestrzeni tabel cofania.

/* 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

Wstaw usunięte wiersze z powrotem:

/* 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TO_CHAR typu Oracle PL/SQL TABLE

  2. Hibernacja natywnego zapytania — kolumna char(3)

  3. java.lang.ClassCastException:oracle.sql.TIMESTAMP nie może być rzutowany na java.sql.Timestamp

  4. Oracle UTL_FILE odczytuje wiersze pliku CSV

  5. oracle 12c - wybierz ciąg po ostatnim wystąpieniu znaku