반응형
ORA-04092: 트리거 안에 COMMIT를 할 수 없습니다. / 트리거 안에 ROLLBACK을 할 수 없습니다.
위와 같은 오류가 발생하는 경우 해결하는 방법을 알려 드리겠습니다.
원인
- 트리거(TRIGGER) 는 오류가 있으면 ROLLBACK, 오류가 없으면 COMMIT 이 자동으로 처리
- 즉, 트리거 적용 시 AUTO COMMIT 수행되고 있으니 COMMIT / ROLLBACK 명령어가 필요 없다.
- COMMIT 이나 ROLLBACK 필요 없으므로 삭제
해결 방법
- COMMIT 이나 ROLLBACK이 명령어 삭제 (권장)
- 트리거 내부에서 프로시저를 호출하는 경우 해당 프로시저 안에 있는 COMMIT, ROLLBACK 명령어도 삭제
- 트리거 내에 AUTO COMMIT 해제 기능 추가 (코드가 너무 복잡해서 수정 불가능한 경우만 사용)
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
반응형