创建一个用于更新另一个表(SQLplus)中的列的after触发器



每当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;
/

最新更新