0
DB에 다음과 같은 트리거가 있지만 인벤토리가 감소하도록 수정하는 방법이 궁금합니다. 이 트리거, 주문 금액 및 재고 수준에 모두 값이 있습니다. if 절에 update 문을 넣을 수는 없습니까? 왜 이것이 작동하지 않는 지 잘 모르겠다.오라클 트리거 삽입시
create or replace TRIGGER INVENTORY_AVAIL
Before INSERT
ON THC_ORDER
FOR EACH ROW
DECLARE
v_quantity_diff number;
v_onhand_quantity number;
BEGIN
-- TRIGGR ON THIS...
--INSERT INTO THC_ORDER
--(FK_ORDER_NO, FK_PROD_ID, QUANITY , COMPLETE_STATUS)
--VALUES
--(:NEW.FK_ORDER_NO, :NEW.FK_PROD_ID, :NEW.QUANITY , :NEW.COMPLETE_STATUS);
SELECT INVENTORY_ONHAND INTO v_onhand_quantity
FROM THC_INVENTORY
WHERE :new.fk_prod_id = THC_INVENTORY.FK_PROD_ID;
IF((v_onhand_quantity - :NEW.QUANTITY) >= 0)
THEN
INSERT INTO THC_ORDER (FK_ORDER_NO, FK_PROD_ID, QUANTITY, COMPLETE_STATUS)
VALUES (:NEW.FK_ORDER_NO, :NEW.FK_PROD_ID, :NEW.QUANTITY , :NEW.COMPLETE_STATUS);
/* not sure if this should be a separate trigger... */
UPDATE THC_INVENTORY
SET INVENTORY_ONHAND = v_onhand_quantity - :NEW.QUANTITY;
ELSE
raise_application_error (-20001,'ERROR: QUANTITY ' || :NEW.QUANTITY
|| ' EXCEEDS INVENTORY ONHAND [' || TO_CHAR(v_onhand_quantity) || ']');
END IF;
END;