Oracle
 sql >> база данни >  >> RDS >> Oracle

Отмяна на ангажирана транзакция

Не можете да връщате обратно това, което вече е било ангажирано. Това, което можете да направите в тази конкретна ситуация, като една от най-бързите опции, е да издадете заявка за ретроспекция към таблица, от която сте изтрили ред(ове), и да ги вмъкнете обратно. Ето един прост пример:

Забележка :Успехът на тази операция зависи от стойността (по подразбиране 900 секунди) на 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

Вмъкване на изтритите редове назад:

/* 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. Въведение в PL/SQL VARRAY в Oracle Database

  2. Oracle Pro*C/OCI инсталационни манипулатори за SIGSEGV/SIGABRT и приятели – защо и как да деактивирате?

  3. Генериране на произволно число във всеки ред в Oracle Query

  4. Как да направите настройка на sql в Oracle

  5. Начало на Oracle само за четене