每当Order_call
表中的2类订单在Order_line
表中描述时,我需要创建一个触发器来更新Product表中的数量。我已经尝试了以下触发器,但我不断收到错误:
CREATE OR REPLACE TRIGGER updqty AFTER INSERT OR UPDATE ON ORDER_LINE FOR EACH ROW
DECLARE
ortype NUMBER(1);
BEGIN
SELECT @ortype=type FROM ORDER_CALL WHERE orderID=NEW.orderID;
IF (ortype=2) THEN
UPDATE PRODUCT SET qty = qty - NEW.qty WHERE part_no=NEW.part_no;
END IF;
END;
我有一个包含每个可用产品数量的Products
表,一个注册orderID及其类型的Order_call
表(类型2表示实际销售),以及一个详细说明实际订单的Order_Line
表。它在行上存储订单ID、零件_编号和销售数量。因此,对于Order_Call
表中类型2的每个订单ID,我需要获取(从Order_Line
)售出的每个产品的数量,并将其从Product
表中相应零件_no的数量中减去。
我收到以下编译错误:
4/2 PL/SQL: SQL Statement ignored
4/19 PL/SQL: ORA-00936: missing expression
我没有太多SQL的经验。谢谢你的帮助。
如果以后还有人需要的话,我终于拿到了:
CREATE OR REPLACE TRIGGER updqty
BEFORE INSERT OR UPDATE
ON ORDER_LINE
FOR EACH ROW
DECLARE
ortype NUMBER (5);
BEGIN
SELECT TYPE
INTO ortype
FROM ORDER_CALL
WHERE order_call.orderID = :NEW.orderID;
IF (ortype = 2)
THEN
UPDATE PRODUCT
SET qty = qty - :NEW.qty
WHERE part_no = :NEW.part_no;
END IF;
END;
/