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