Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक प्रतिबद्ध लेनदेन रोलबैक करें

जो पहले ही किया जा चुका है, उसे आप रोलबैक नहीं कर सकते। आप क्या कर सकते हैं, इस विशेष स्थिति में, सबसे तेज़ विकल्पों में से एक के रूप में, उस तालिका के विरुद्ध एक फ्लैशबैक क्वेरी जारी करना है जिससे आपने पंक्तियों को हटा दिया है और उन्हें वापस सम्मिलित किया है। यहाँ एक सरल उदाहरण है:

नोट :इस ऑपरेशन की सफलता undo_retention के मान (डिफ़ॉल्ट 900 सेकंड) पर निर्भर करती है पैरामीटर - समय की अवधि (स्वचालित रूप से कम की जा सकती है) जिसके दौरान पूर्ववत जानकारी को पूर्ववत टेबलस्पेस में रखा जाता है।

/* 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. तालिका पंक्ति मौजूद है या नहीं, इसका परीक्षण करने का एक प्रभावी तरीका

  2. ORA-29280 कैसे हल करें:अमान्य निर्देशिका पथ

  3. ओरेकल एसक्यूएल में बराबर 'शो क्रिएट टेबल'

  4. ओरेकल में एमओडी () फ़ंक्शन

  5. Oracle में किसी संख्या के लिए डिफ़ॉल्ट प्रेसिजन और स्केल क्या है?