안녕하세요.. 트리거에 대한 질문입니다.
실행 에러는 나질 않는데.. 원하는 output이 나오질 않습니다.
제가 초보라서..트리거에 대한 이해가 부족합니다.
고수님들의 조언을 부탁드립니다. ^_^
오류 사항을 말씀드리겠습니다.
#ABC#(TABLE명)TABLE에 INSERT 할때 실행하는 트리거 문입니다.
조건
TABLE에 DATA가 하나도 없다구 가정하구 쓰겠습니다.
1. gubun = '0' 일때 1번과 2번을 실행합니다.
(#BBC#:TABLE)
필드명 PRODATE JEPUMCODE OUTQTY1
20010414 ABCD01(제품코드) 50 ->가
(#DDE#:TABLE)
필드명 PRODATE JEPUMCODE JaeGoQty
200104 ABCD01(제품코드) 50 ->나
입력이 되어집니다.
%오류는 다음과정에서 나온것 같습니다.%
2. gubun = '1'일때 입력하는 과정에서 같은일자(prodate),같은제품(JEPUMCODE)을
입력하면 문제가 생깁니다. 아래에 있는 3번 문이 인식을 하지 않습니다.
하지만 아래에 4번문은 문제없이 인식을 하구요.
예를들어 입력값 : 같은일자, 같은제품 , 수량이 30이면
다음 과 같이 나오질 않구.. 오류 예제처럼 나옵니다.
(#BBC#:TABLE)
필드명 PRODATE JEPUMCODE OUTQTY1 INTQTY2 OUTQTY3
20010414 ABCD01(제품코드) 50 ->가 30 30
(#DDE#:TABLE)
필드명 PRODATE JEPUMCODE JaeGoQty
200104 ABCD01(제품코드) 20 ->나
---> 오류 예제
===========================================================================================
(#BBC#:TABLE)
필드명 PRODATE JEPUMCODE OUTQTY1 INTQTY2 OUTQTY3
20010414 ABCD01(제품코드) 50 ->가
(#DDE#:TABLE)
필드명 PRODATE JEPUMCODE JaeGoQty
200104 ABCD01(제품코드) 20 ->나
============================================================================================
왜... 입력이 안되는 줄 모르겠습니다.
고수님들의 조언을 부탁드립니다...
create TRIGGER #ABC#_INSERT
AFTER insert ON #ABC# FOR EACH ROW
begin
if :NEW.GUBUN = '0' then
begin
update #BBC#
set OutQty1 = OutQty1 + :NEW.QTY
Where JEPUMCODE = :NEW.JEPUMCODE and PRODATE = :NEW.PRODATE;
if (SQL%ROWCOUNT)=0 then
begin
INSERT INTO #BBC# ( PROdate, JEPUMCODE, OutQty1 )
1번-> values (:NEW.PRODATE, :NEW.JEPUMCODE, :NEW.QTY);
end;
end if;
update #DDE#
set JaeGoQty = JaeGoQty + :NEW.QTY
Where JEPUMCODE = :NEW.JEPUMCODE and proDATE = substr(:NEW.prodate,1,6);
if (SQL%ROWCOUNT)=0 then
begin
INSERT INTO #DDE# ( prodate, JEPUMCODE, JAEGOQTY)
2번-> values (SubStr(:NEW.proDATE,1,6), :NEW.JEPUMCODE, :NEW.QTY);
end;
end if;
end;
end if;
if :NEW.GUBUN = '1' then
begin
update #BBC#
3번 -> set inQty2 = inQty2 + :NEW.QTY,
outQty3 = outQty3 + :NEW.QTY
Where JEPUMCODE = :NEW.JEPUMCODE and PRODATE = :NEW.PRODATE;
if (SQL%ROWCOUNT)=0 then
begin
INSERT INTO #BBC# ( PROdate, JEPUMCODE, inQty2, outQty3 )
values (:NEW.PRODATE, :NEW.JEPUMCODE, :NEW.QTY, :NEW.QTY );
end;
end if;
update #DDE#
4번 -> set JaeGoQty = JaeGoQty - :NEW.QTY
Where JEPUMCODE = :NEW.JEPUMCODE and proDATE = substr(:NEW.prodate,1,6);
if (SQL%ROWCOUNT)=0 then
begin
INSERT INTO #DDE# ( prodate, JEPUMCODE, JAEGOQTY)
values (SubStr(:NEW.proDATE,1,6), :NEW.JEPUMCODE, -:NEW.QTY);
end;
end if;
end;
end if;
end;