Oracle 자치 사무 pragma autonomoustransaction

자치 사 무 는 주 절차 에 독립 된 사무 로 주 업무 의 통제 에 영향 을 주지 않 는 다.비 자치 사무 중의 COMMIT, ROLLBACK 은 전체 사무 에 영향 을 줄 것 이다.
CREATE TABLE T_ERROR_LOG(ID VARCHAR(50), ERROR_LOG VARCHAR(50));

  --     (    )
  CREATE OR REPLACE PROCEDURE PROC_AUTONOMOUS_ERROR_LOG AS
  --     (    )
  PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

  INSERT INTO T_ERROR_LOG
    (ID, ERROR_LOG)
  VALUES
    (SYS_GUID(), '    (    )');

  COMMIT;
END;


  --     :
  CREATE OR REPLACE PROCEDURE PROC_NONAUTONOMOUS_ERROR_LOG AS
BEGIN
  
  INSERT INTO T_ERROR_LOG
    (ID, ERROR_LOG)
  VALUES
    (SYS_GUID(), '     ');

  COMMIT;
END;

자치 사 무 는 현재 사무 에서 시작 하여 자신의 Begin end 구문 블록 에서 실 행 됩 니 다.실행 중인 업무 에 영향 을 주지 않 고 독립 적 으로 제출 되 거나 다시 실 행 될 수 있 습 니 다.그 렇 기 때문에 오류 로 그 를 기록 하 는 이상 적 인 형식 이 되 었 다.트 랜 잭 션 에서 오류 가 감지 되 었 을 때 오류 로그 시트 에 한 줄 을 삽입 하고 제출 한 다음 이번 삽입 을 잃 어 버 리 지 않 은 상태 에서 홈 트 랜 잭 션 을 되 돌 릴 수 있 습 니 다.자치 사 무 는 주 업무 와 분리 되 기 때문에 수 정 된 줄 의 현재 상 태 를 감지 할 수 없습니다.주 업무 가 제출 되 기 전에 단독 세 션 에 있 었 던 것 처럼 자치 업무 에 있어 서 는 사용 할 수 없습니다.그러나 반대로 주 사 무 는 이미 실 행 된 자치 업무 의 결 과 를 감지 할 수 있다.
자치 사 무 를 만 들 려 면 익명 블록 의 최고 층 이나 저장 과정, 함수, 패 킷 또는 트리거 정의 부분 에서 PL / SQL 의 PRAGMA AUTonoMOUS 를 사용 해 야 합 니 다.TRANSACTION 문구.이러한 모듈 이나 과정 에서 실 행 된 SQL 문 구 는 모두 자치 적 이다.
자치 사 무 는 다음 과 같은 특징 이 있다.
첫째, 이 프로그램 은 기 존의 메 인 프로그램 에 의존 하지 않 습 니 다. 예 를 들 어 메 인 프로그램 에 제출 되 지 않 은 데이터 가 있 으 면 자치 사무 에서 찾 을 수 없습니다.
둘째, 자치 사무 에서 commt 또는 rollback 은 현재 자치 사무 중의 DML 만 제출 하거나 스크롤 백 할 뿐 메 인 프로그램의 DML 에 영향 을 주지 않 습 니 다.

좋은 웹페이지 즐겨찾기