ホームページ >データベース >Oracle >オラクルにロールバックはありますか?

オラクルにロールバックはありますか?

WBOY
WBOYオリジナル
2022-06-08 17:10:354223ブラウズ

Oracle にはロールバックがあります。ロールバックは、現在のトランザクションまたは問題のあるトランザクションを元に戻すために使用されます。ロールバック メソッドは、トランザクションのロールバックを完了するために使用できます。構文は、「ROLLBACK [暗黙のキーワード] [TO [ SAVEPOINT] ] セーブポイント名 | FORCE 'string'};"。

オラクルにロールバックはありますか?

このチュートリアルの動作環境: Windows 10 システム、Oracle バージョン 12c、Dell G3 コンピューター。

Oracle にはロールバックがありますか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。