sql >> データベース >  >> RDS >> Oracle

コミットされたトランザクションをロールバックする

    すでにコミットされているものをロールバックすることはできません。この特定の状況で最も迅速なオプションの1つとして実行できることは、行を削除したテーブルに対してフラッシュバッククエリを発行し、それらを挿入し直すことです。簡単な例を次に示します。

    :この操作が成功するかどうかは、undo_retentionの値(デフォルトは900秒)によって異なります。 パラメーター-UNDO情報がUNDO表領域に保持される期間(自動的に短縮可能)。

    /* 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. 表領域の空き領域を確認する

    2. SQLデータベースからphp/htmlテーブルにデータを表示します

    3. Mysql ::Error:指定されたキーが長すぎました。キーの最大長は1000バイトです

    4. 1つのステートメントでJavaで実行される複数のクエリ