2016-12-14 11 views
1

私はそれを再説明しようと思います。私はoracle初心者です。私は成功しませんでした。オンラインで検索しようとしました。誰かが私にOracleデータベースのInsert文をコミットした後にロールバックスクリプトを作成する方法を教えてください。まだコミットされていない挿入ステートメント。単に、プロダクション環境での挿入とコミットの後に何かが起きた場合のバックアップロールバックスクリプトが必要です。oracleでコミットした後に挿入文をロールバックするにはどうすればよいですか?

+0

あなたはすでにトランザクションをコミットしています。これはトランザクションを終了するためのシンボルです。データベース全体をロールバックしない限り、コミットされたものをロールバックする方法はありません。 – LONG

+0

@LONG、私はまだコミットしていません。挿入ステートメントの後に何かが起きた場合のスクリプト – Danny

+1

すべてが挿入されている場合、それらの "ロールバック"は単に一致する削除セットになります - いいえ? –

答えて

3

begin 
statement; 
    savepoint savepoint1; 
    begin 
     your insert statement 
    exception 
     when others then 
     rollback to savepoint1; 
    end; 
     ROLLBACK TO savepoint1; 
end; 
+1

ありがとうございました@LONG – Danny

+0

ダニーを助けることができてうれしい – LONG

2

あなたはまだCOMMIT;編を持っていない場合は、あなたがする必要があるすべてはあなたがより詳細に制御したい場合は、トランザクション全体でセーブポイントを作成することができますROLLBACK;

です:

SAVEPOINT before_inserts; 

以降、セーブポイントにロールバックする:

ROLLBACK TO before_inserts; 

エラーを発見するために作業をコミットしたことがありましたら、フラッシュバッククエリを使用してテーブルやデータベースを元の状態に戻すことができます。

+0

ありがとうSentinel – Danny

関連する問題