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

Rollback en forpligtet transaktion

Du kan ikke rulle tilbage, hvad der allerede er blevet begået. Hvad du kan gøre i denne særlige situation, som en af ​​de hurtigste muligheder, er at udstede en flashback-forespørgsel mod en tabel, du har slettet række(r) fra og indsætte dem tilbage. Her er et simpelt eksempel:

Bemærk :Succes med denne handling afhænger af værdien (standard 900 sekunder) af undo_retention parameter - tidsperiode (kan reduceres automatisk), hvor fortryd-informationen bevares i fortryd tablespace.

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

Indsæt slettede rækker tilbage:

/* 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. funktion til at kontrollere, om SQLite bruger journal_mode=WAL eller journal_mode=DELETE

  2. Udfør en lagret procedure i en anden lagret procedure i SQL server

  3. Forbind PHP til MSSQL via PDO ODBC

  4. Mountain Lion Postgres kunne ikke oprette forbindelse