Oracle にはロールバックがあります。ロールバックは、現在のトランザクションまたは問題のあるトランザクションを元に戻すために使用されます。ロールバック メソッドは、トランザクションのロールバックを完了するために使用できます。構文は、「ROLLBACK [暗黙のキーワード] [TO [ SAVEPOINT] ] セーブポイント名 | FORCE 'string'};"。
このチュートリアルの動作環境: Windows 10 システム、Oracle バージョン 12c、Dell G3 コンピューター。
1. 概念
Oracle では、ロールバックの使用法はコミットの逆です。現在のトランザクションまたは問題のあるトランザクションを元に戻します。
1.1 構文
ROLLBACK [WORK] [TO [SAVEPOINT] savepoint_name | FORCE 'string'};
例:
work - オプション。暗黙のキーワードは記述してもしなくても構いません。
セーブポイントへ savepoint_name - オプション。 rollback ステートメントは、savepoint_name で指定されたセーブポイントまでの現在のセッションのすべての変更を元に戻します。この句を省略すると、すべての変更が元に戻されます。
「文字列 - オプション」を強制します。破損している可能性があるトランザクションまたは問題のあるトランザクションを強制的にロールバックするために使用されます。この句を使用すると、トランザクション ID を一重引用符で囲んで文字列として指定できます。 dba_2pc_pengding、v$corrupt_xid_list という名前のトランザクション識別子は、システム ビューで見つけることができます (問題のあるトランザクションをセーブ ポイントまでロールバックする方法はありません。)
1.1 データの準備
DROP TABLE stu; -- if exists CREATE TABLE stu ( s_id NUMBER, s_xm VARCHAR2(30) ); ALTER TABLE stu ADD CONSTRAINTS pk_stu_id PRIMARY KEY(s_id);
2.savepoint
最新のポイントにロールバックql
DECLARE BEGIN INSERT INTO stu(s_id, s_xm) VALUES(1, '小游子'); SAVEPOINT ps1; INSERT INTO stu(s_id, s_xm) VALUES(2, '小优子'); SAVEPOINT ps2; -- 若也是 ps1,则回滚至此处(最近) INSERT INTO stu(s_id, s_xm) VALUES(2, '小优子'); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK TO ps1; dbms_output.put_line(SQLCODE ||' : '||SQLERRM); dbms_output.put_line(dbms_utility.format_error_backtrace); END;
実行結果:
# #推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
以上がオラクルにロールバックはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。