sql >> Database >  >> RDS >> Oracle

Een vastgelegde transactie terugdraaien

Je kunt niet terugdraaien wat al is vastgelegd. Wat je in deze specifieke situatie kunt doen, als een van de snelste opties, is om een ​​flashback-query uit te voeren voor een tabel waaruit je rij(en) hebt verwijderd en deze weer in te voegen. Hier is een eenvoudig voorbeeld:

Opmerking :Het succes van deze bewerking hangt af van de waarde (standaard 900 seconden) van undo_retention parameter - periode (kan automatisch worden verkort) waarin informatie voor ongedaan maken wordt bewaard in de tabelruimte voor ongedaan maken.

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

Verwijderde rijen terug invoegen:

/* 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. MySQL strip niet-numerieke tekens om te vergelijken

  2. Hoe kan ik verbinding maken met SQL Server met behulp van geïntegreerde beveiliging met het JDBC-stuurprogramma?

  3. Hoe kolom in tabel te verwijderen

  4. Controleer of er al een door de gebruiker gedefinieerd type bestaat in PostgreSQL