ホームページ >データベース >Oracle >Oracle ストアド プロシージャでのトランザクションの用途は何ですか?

Oracle ストアド プロシージャでのトランザクションの用途は何ですか?

青灯夜游
青灯夜游オリジナル
2022-01-25 17:30:191924ブラウズ

Oracle ストアド プロシージャでは、トランザクションはデータの一貫性を確保するために使用され、関連する DML ステートメントのグループで構成されます。この DML ステートメントのグループによって実行される操作は、すべて確認されるか、すべてキャンセルされます。トランザクション操作が実行されると、他のユーザーがテーブル構造を変更したり、他のトランザクションが対応する行に対して DML 操作を実行したりするのを防ぐために、影響を受けるテーブルと行にロックが設定されます。

Oracle ストアド プロシージャでのトランザクションの用途は何ですか?

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

Oracle ストアド プロシージャのトランザクション処理

1. トランザクションはデータの一貫性を確保するために使用され、一連の関連する DML ステートメントで構成されます。このグループの DML ステートメントによって実行されるものは、すべて確認されるか、すべてキャンセルされます。

2. トランザクション操作 (DML) を実行するとき、Oracle は影響を受けるテーブルをロックして、他のユーザーがテーブル構造を変更できないようにします。また、影響を受ける行に行ロックを追加して、他のユーザーがテーブル構造を変更できないようにします。テーブル構造。他のトランザクションが対応する行に対して DML 操作を実行できないようにします。

3. トランザクションのコミットまたはトランザクションのロールバックを実行すると、Oracle はトランザクションの変更を確認するか、トランザクションをロールバックし、トランザクションを終了し、セーブポイントを削除し、ロックを解放します。

4. トランザクションをコミット (COMMIT) してトランザクションの変更を確認し、現在のトランザクションを終了し、保存ポイントを削除してロックを解放すると、現在のトランザクション内のすべての保留中のデータが永続的に変更されます。

5. 保存ポイント (SAVEPOINT) 現在のトランザクションで、トランザクションの保存ポイントをマークします。

6. ロールバック トランザクション (ROLLBACK) は、トランザクション全体をロールバックし、トランザクションによって定義されたすべてのセーブ ポイントを削除し、ロックを解放し、保留中のデータ変更をすべて破棄します。

7. トランザクションを指定されたセーブ ポイントにロールバックします (ROLLBACK TO SAVEPOINT)。現在のトランザクションを指定されたセーブ ポイントにロールバックし、セーブ ポイント作成後の変更を破棄し、ロックを解放します。

8. DDL、DCL ステートメントを実行するとき、または SQL*PLUS を終了するとき、トランザクションは自動的に送信されます;

9. トランザクション中はユーザーとの対話を避ける必要があります;

10. データ クエリ中は、トランザクションを開始しないようにしてください。

11. トランザクションをできるだけ短くしてください。

12. トランザクション内のアクセスするデータの量は最小限に抑えてください。

ケース:

create or replace procedure stu_proc
(
  v_id in number,
  v_name in varchar2,
  v_age in number,
  v_msg out varchar2
) as
begin
  insert into student(id, sname, age) values (v_id, v_name, v_age);
  commit;
  v_msg:='添加成功';
exception
  when others then
    rollback;
    v_msg:='失败成功';
    RAISE_APPLICATION_ERROR(-20010, 'ERROR:违反唯一索引约束!');
end;

推奨チュートリアル: 「Oracle チュートリアル

以上がOracle ストアド プロシージャでのトランザクションの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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