ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

AUTONOMOUS_TRANSACTIONプラグマ

AUTONOMOUS_TRANSACTIONプラグマは、ルーチンを自律型(メイン・トランザクションから独立している)とマークします。

このコンテキストでは、ルーチンは次のいずれかになります。

自律型ルーチンが起動されると、メイン・トランザクションは停止します。 自律型トランザクションは、メイン・トランザクションから完全に独立しています。ロック、リソースまたはコミット依存関係を共有することはありません。 自律型トランザクションはメイン・トランザクションに影響を与えません。

自律型トランザクションによって行われた変更は、自律型トランザクションがコミットすると、他のトランザクションから参照できるようになります。 分離レベルがREAD COMMITTED(デフォルト)に設定されている場合にのみ、メイン・トランザクションが再開すると、これらの変更をメイン・トランザクションから参照できるようになります。

構文

autonomous_transaction_pragma ::=

autonomous_transaction_pragma
auto_trans_pragma.gifの説明

キーワードとパラメータの説明

PRAGMA

文がプラグマ(コンパイラ・ディレクティブ)であることを表します。 プラグマは、実行時ではなくコンパイル時に処理されます。 プラグマは、コンパイラに情報を渡します。

AUTONOMOUS_TRANSACTION

ルーチンが自律型であることを示します。

使用上の注意

このプラグマは、パッケージ全体には適用できませんが、パッケージ内の各サブプログラムには適用できます。

このプラグマは、オブジェクト型全体には適用できませんが、SQLオブジェクト型の各メソッドには適用できます。

通常のトリガーとは異なり、自律型トリガーにはCOMMITROLLBACKなどのトランザクション制御文を含めることができます。また、自律トリガーではEXECUTE IMMEDIATE文を使用してDDL文(CREATEDROPなど)を発行できます。

メイン・トランザクション内で、自律型サブプログラムをコールする前にマークされたセーブポイントまでロールバックしても、自律型トランザクションはロールバックされません。 自律型トランザクションは、メイン・トランザクションからは完全に独立していることに注意してください。

メイン・トランザクション(自律型ルーチンの終了まで再開できない)が保持するリソースに、自律型トランザクションがアクセスしようとすると、デッドロックが発生します。 この場合は、データベースによって自律型トランザクションで例外が呼び出されます。例外が未処理になった場合、自律型トランザクションはロールバックされます。

コミットまたはロールバックせずにアクティブな自律型トランザクションを終了しようとすると、データベースによって例外が呼び出されます。 例外が未処理になった場合、またはその他の未処理例外が発生してトランザクションが終了した場合、トランザクションはロールバックされます。

自律型トランザクションがオープンされている間は、自律型ルーチン内でPIPE ROW文を実行することはできません。 You must close the autonomous transaction before executing the PIPE ROW statement. この処理は通常、PIPE ROW文を実行する前に自律型トランザクションをコミットまたはロールバックすることによって行います。

関連トピック