Oracle Database
自律型トランザクション
サーチ…
備考
自律型トランザクションの典型的な使用例は次のとおりです。
- 上記の例で説明したエラーロギングフレームワークのようなロギングフレームワークを構築するため。
- トランザクションの最終ステータス(COMMITまたはROLLBACK)に関係なく、表のトリガーでDML操作を監査します。
ロギングエラーのための自律型トランザクションの使用
次の手順は、一般的なエラーログテーブルにアプリケーションのすべてのエラーを記録するために使用される一般的な手順です。
CREATE OR REPLACE PROCEDURE log_errors
(
p_calling_program IN VARCHAR2,
p_error_code IN INTEGER,
p_error_description IN VARCHAR2
)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO error_log
VALUES
(
p_calling_program,
p_error_code,
p_error_description,
SYSDATE,
USER
);
COMMIT;
END log_errors;
次の匿名PLSQLブロックは、log_errorsプロシージャの呼び出し方法を示しています。
BEGIN
DELETE FROM dept WHERE deptno = 10;
EXCEPTION
WHEN OTHERS THEN
log_errors('Delete dept',sqlcode, sqlerrm);
RAISE;
END;
SELECT * FROM error_log;
CALLING_PROGRAM ERROR_CODE ERROR_DESCRIPTION ERROR_DATETIME DB_USER
Delete dept -2292 ORA-02292: integrity constraint violated - child record found 08/09/2016 APEX_PUBLIC_USER
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow