CREATE OR REPLACE TRIGGER TRI_ORDER3_INSERT
AFTER INSERT ON ORDER1
FOR EACH ROW
DECLARE
V_QTY NUMBER := 0;
BEGIN
-- 물품테이블에서 재고수량을 가져옴.
SELECT I.ITEMQTY INTO V_QTY
FROM ITEM1 I WHERE I.ITEMNO =:new.ORDITEM;
-- 주문수량이 재고수량 작거나 같아야 됨.
IF :new.ORDCNT <= V_QTY THEN
-- 물품의 재고수량 주문수량만큼 뺌
UPDATE ITEM1 SET ITEMQTY=ITEMQTY-:new.ORDCNT WHERE ITEMNO =:new.ORDITEM;
ELSE
-- 오류 출력
raise_application_error(-20022, '재고부족');
END IF;
END;
/
:new는 insert할 때 받아올 값임. 그래서 order1을 from 하지 않았지만 order1의 column을 쓸 수 잇는거임.