제가 원하는 로직이 트리거로 구현 가능한지 도움좀 부탁드립니다. 0 3 1,331

by 충삼이 [PL/SQL] 트리거 [2013.02.18 11:15:00]


안녕하세요~

 제가 원하는 기능이 트리거로 구현가능한지 궁금하여 글을 올립니다.

질문은 아래와 같습니다.


어떤 규정을 설정하는 테이블이 존재하고, 해당 규정을 생성, 수정 삭제 할 수 있는 여러명의 "관리자"가 존재합니다.

이 규정은 시스템 전체에 영향을 줄 수 있는 규정이므로, 반드시 생성, 수정, 삭제시 로깅 작업이 필요하여,

해당 규정 테이블에는 "최종 수정자"(수정한 관리자 ID) 를 저장 할 수 있는 컬럼을 만들었습니다.

여기에서 관리자 ID는 오라클 계정이 아닌 규정설정 프로그램 상의 개별적인 ID 입니다.

트리거로 작업 구상을하고 실제 작업을 하던 중 삭제 부분에서 문제를 찾았습니다.

Inserting or Updating 시 에는 최종 수정자를 OLD or NEW 데이터로 가져 올 수 있지만, 

Deleteing 시 에는 삭제를 수행한 관리자 ID를 가져 올 수 없다는 문제점을 발견했습니다.


그래서 해결 할 수 있는 약간의 꼼수를 생각해 봤는데  Delete 전 Update 후 Delete를 하거나,

혹은 로깅작업을 트리거로 구현하지 않고, 따로 만든다... 정도인데

따로 만들경우, 관리해야 할 규정이 한두개가 아니라 조금 꺼려지네요...



위의 작업을 하기 위해 트리거로 구현이 가능 한 방법이 있을까요?

없다면 따로 로깅하는 pl/sql 을 만드는 것이 최선일까요?

조언 부탁드립니다.

감사합니다.
by 신이만든짝퉁 [2013.02.18 11:36:30]
이방법이 한 대안이 될 수 있을 것 같습니다.

http://www.gurubee.net/lecture/1861

by 충삼이 [2013.02.18 11:52:06]
아...죄송합니다...

제가 좀 빠뜨렸네요..

위에서 언급한 관리자 ID는 Oracle 로그인 ID 가 아닌 저희 시스템에서 사용하는 일반 ID 입니다.

내용 수정할게요~

by 충삼이 [2013.02.18 14:20:17]
신이만든짝퉁 // 관리자의 ID가 오라클 계정이 아니라 Auditing 은 사용 할 수가 없겠어요~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입