안녕하세요
제가 공부하기로는
트리거는 지정한 이벤트(DML)가 발생할 때마다 자동으로 실행되는 pl/sql와 sql 명령 객체
이고 호출문 없이 자동 호출된다고 배웠습니다.
그리고 데이터 흐름 제어문 TCL 을 기본값으로는 사용할 수 없다고 배웠습니다.
그럼 TCL을 사용하기 위해서는 어떻게 하는 방법이 있나요?
트리거의 기본값을 바꾸는 방법이 있는건가요?
아니라면 엄청 쉬운 방법이 있는 건가요?
너무 궁금해서 질문 올립니다.
create or replace trigger update_error_t after update of sal on emp for each row begin insert into black_list(bno , bsal , bafter) values(:old.empno , :old.sal , :new.sal); raise_application_error(-20001 , '사원 급여 변경 못해요'); commit; end; /
이렇게 작성한 이유는 블랙 리스트라는 테이블을 만들어 놓고
emp 테이블의 급여를 변경 못하게 하고 만약 하려고 하면 ,
블랙 리스트에 하려고 했던 내용을 추가하려고 했습니다.
어떻게 하면 가능한지 너무 궁금합니다.
create or replace trigger update_error_t after update of sal on emp for each row declare PRAGMA autonomous_transaction; begin insert into black_list(bno , bsal , bafter) values(:old.empno , :old.sal , :new.sal); commit; raise_application_error(-20001 , '사원 급여 변경 못해요'); end; /
결국 우선 해결 했는데
저와 같은 고민을 하는 분들을 위해서 글은 지우지 않겠습니다.
PRAGMA autonomous_transaction; 에 대해서 아는게 없는데 혹시
배울수 있는 파트가 어딘지 알려주실수 있으신가요??