트리거 동작성능 차이점 궁금 0 2 1,729

by 손님 트리거 일괄처리 [2012.03.09 08:32:25]


안녕하세요. 
도저히 궁금증을 못이겨 이렇게 글을 올림니다.

트리거 흐름은 아래와 같습니다.
출고 테이블 -> 수불 테이블 -> 현재고 테이블, 월간 재고 테이블

트리거의 기본 로직은 
  1) 현재고, 월간 재고 테이블에 아이템이 존재하는지 검사
  2) 있으면 update, 없으면 insert 입니다. 

여기서 수불 테이블 트리거가 2가지로 설계된게 있는데

1번째는
수불테이블 After each row 이벤트 발생 할때마다 수불데이타를  현재고 테이블과 월간 재고 테이블에 적용하는 것이고

2번째는
패키지를 일종의 저장 장소로 이용하여 다음과 같이 동작합니다.

   1)  Before statement 일때 패키지 저장 공간 초기화
   2)  After each row  일때 각열 old, new정보를 패키지에 array로 저장하고
   3)  After statement  일때 패키지에 저장된 데이타를 현재고 테이블과 월간 재고 테이블에 적용합니다.

두 트리거 방식을 서로 비교하면 어떤 장단점이 있을까요?
by 마농 [2012.03.10 23:19:59]
보통은 1번 방식으로 만드는게 편리하겠죠.
1번 방식으로 할수 없는 상황이 발생했을 때 부득이하게 2번 방식을 사용하는 것입니다.
단순하게 입력된 값만으로 다음 테이블에 반영하는 것이라면 1번방식으로 충분합니다.
그러나 입력된 값 외에 같은 테이블에서 더 많은 정보를 필요로 하는 경우에는
트리거가 걸린 테이블을 다시 참조해야만 하는데...
행 트리거에서는 자기 자신에 대한 참조가 안됩니다. 오류가 발생하죠.
그래서 부득이하게 문장트리거를 이용하는 것입니다.

by 손님 [2012.03.12 07:58:27]
답변 감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입