我需要创建一个触发器,只要在Order_call
表中描述Order_line
表中的类型2的顺序,就会更新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
表,其中详细说明了实际的订单。它在行上存储 orderID ,部分 _ 否,以及销售数量。因此,对于Order_Call
表格中每个类型2的 orderID ,我需要获取每个销售产品的数量(来自Order_Line
)并从相应的数量中减去它Product
表格中的部分 _ 否。
我收到以下编译错误:
4/2 PL/SQL: SQL Statement ignored
4/19 PL/SQL: ORA-00936: missing expression
我没有太多 SQL 经验。 谢谢你的帮助。
答案 0 :(得分:0)
我终于设法得到它,如果其他人以后需要这个:
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;
/