Oracle ストアド プロシージャでは、トランザクションはデータの一貫性を確保するために使用され、関連する DML ステートメントのグループで構成されます。この DML ステートメントのグループによって実行される操作は、すべて確認されるか、すべてキャンセルされます。トランザクション操作が実行されると、他のユーザーがテーブル構造を変更したり、他のトランザクションが対応する行に対して DML 操作を実行したりするのを防ぐために、影響を受けるテーブルと行にロックが設定されます。
このチュートリアルの動作環境: 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 サイトの他の関連記事を参照してください。