A라는 테이블이 있고 A# 이라는 구조가 동일한 테이블을 생성하였습니다. A테이블은 평문이고 A#은 암호화되서 들어가야 합니다. A테이블에 데이터 입력시 트리거를 이용하려고 합니다. (A#으로 암호화 되어 입력후 A테이블을 내용 삭제)
근데 ORA-04091 란 에러메세지가 나오네요 트리거에서는 하나의 테이블만 수정가능하다는건가?!ㅎㅎㅎ Statement 트리거를 사용하라고 하는데 잘 이해가 안되네요~
도움좀~~~
by 마농
[2012.12.12 13:52:33]
ORA-04091 은 트리거 대상 테이블에 대해 DML 을 수행하면 나는 에러입니다. 이렇게 하면 안되구요. A 가 테이블 맞나요? 혹시 뷰는 아닌거죠? 1. 만약 뷰라면 INSTEAD OF 트리거를 이용하시면 됩니다. 2. 테이블이라면? 입력 되자마자 삭제된다는 것인데.. 그렇다면 굳이 A 를 거치지 않고 바로 A# 에 입력하는 방법이 있습니다. A# 에 평문을 입력하면 BEFORE 트리거에서 해당항목만 암화화 해주시면 됩니다. :new.col := 암화화함수(:new.col); 3. A 에 꼭 입력을 해야만 한다면? 패키지 변수 선언 및 행트리거와 문장트리거를 오가며 복잡한 로직으로 구현하는 방법이 있긴 합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.