..여러 가지로 시도를 해 보았는데 잘 안되서요.. 고수님들 잘 부탁드립니다.
#질문의 요지는 동일한 테이블에 주문과 출고가 함께 입력됩니다.
그런데 주문테이블의 총출고수량을 출고레코드가 입력될 때마다 합계를 해서 수정해 주어야 한다는 것입니다.
이 수정부분에서 또 트리거가 발생을 하더라구요. 현재 시점에서 테이블을 수정할 수 는 없는 상태입니다.
테이블의 구조는 아래와 같습니다.
주문테이블(주문번호, 구분, 일자, 상품코드,주문수량, 출고수량, 총출고수량, 출고완료) 이 있습니다.
구분= 주문, 출고 로 이루어져 있습니다.
최초의 주문이 발생하면
주문레코드 주문번호 구분 일자 상품코드 주문수량 출고수량 총출고수량
1111 주문 11/11 aaaaa 100 0 0 으로 레코드가 입력됩니다.
출고가 발생하면 동일한 테이블에
출고레코드 주문번호 구분 일자 상품코드 주문수량 출고수량 총출고수량
1111 출고 11/12 aaaaa 100 50 50
또 출고가 발생하면 동일한 테이블에
출고레코드 주문번호 구분 일자 상품코드 주문수량 출고수량 총출고수량
1111 출고 11/15 aaaaa 100 20 70 레코드가 추가 됩니다.
### 즉 주문레코드와 출고레코드가 동일한 주문테이블에 생성되며 출고이루어 질때 마다 동일한 주문번호의 레코드에 총출고수량을
새롭게 수정해야 합니다.
select @주문번호 = 주문번호,
@상품코드 = 상품코드
from inserted;
update 주문 set 총출고수량 = (select sum(출고수량) from 주문 where 주문번호 = @주문번호 and 상품코드 = @상품코드)
from 주문
## 물론 삭제시에도 동일한 주문번호에 해당하는 레코드만 삭제 됩니다.
# 가장 큰문제는 트리거는 after트리거라고 들었는데 출고수량을 sum해서 다시 주문테이블에 업데이트를 해도 총수량이 잘 맞지 않는다는 것입니다.
한 박자씩 느리게 업데이트되는 느낌이 들기도 합니다.
#그래서 재귀트리거를 써 보았는데 32회를 넘고 자동 롤백 됩니다.
|