하나의 일련 작업이 있습니다.
a 라는 작업, b 라는 작업, c 라는 작업...
그런데 이 중 작업을 하다가 하나라도 에러가 나는 순간에
모든 작업들이 rollback이 되어야 합니다.
그런데 b 라는 작업이 있는데 트리거에 관련된 작업입니다.
해당 트리거 내에는
PRAGMA AUTONOMOUS_TRANSACTION;
이라는 구문이 있습니다.
이 구문을 빼면은
execute immediate 'alter trigger b.b_duplicate disable';
이 부분에서 에러가 납니다.
에러 내용은
1행에 오류:
ORA-04092: 트리거 안에 COMMIT를 할 수 없습니다
ORA-06512: "B.B_DUPLICATE", 줄 4에서
ORA-04088: 트리거 'B.B_DUPLICATE'의 수행시 오류
이런 내용입니다. 추측건데 execute 구문 안에서 자동으로
commit 을 실행하는 것 같은데, 트랜잭션 처리를 위해서
좋은 방법이 없을까요?
참고로 a 에서 트랜잭션을 시작해서 c 에서 commit 을 해주는 형태로
프로그램을 만들었습니다.
그런데 b 라는 트리거 작업에서 트랜잭션이 다시 들어가니깐
만약 에러가 날 시에 모두 롤백이 된다는 보장이 없는거 같더군요
움...고수님들 도와주세요 ^-^a
|