表ESPUMA.ORDER_DETAILS正在变异,触发器/函数可能看不到它

时间:2018-05-01 20:43:27

标签: oracle triggers database-trigger

我有3个表格,其中包含以下列:

  

PRODUCTS(product_id,image, name,price,create_date) ORDERS(order_id,amount,customerAddress,email,customerName,phone,orderDate,orderNum)
  ORDER_DETAILS(id,amount,price,quantity,order_id,product_id)

我创建了一个名为PRODUCTS_SOLD(product_id, quantity)的新表和一个名为PRODUCTS_TRIGGER的触发器,因此在ORDER_DETAILS上的每次插入后,每个产品的product_id和数量都将插入表{{1} }。

这是触发器:

PRODUCTS_SOLD
  

显示此错误:

CREATE OR REPLACE TRIGGER PRODUCTS_TRIGGER 
AFTER INSERT ON ORDER_DETAILS 
FOR EACH ROW 
  DECLARE
  ID order_details.product_id%type := :NEW.PRODUCT_ID; 
  product_quantity number;
BEGIN
  SELECT SUM(quantity) INTO product_quantity FROM ORDER_DETAILS 
  WHERE product_id = ID;
  INSERT INTO PRODUCTS_SOLD VALUES(ID,product_quantity);
END;
     

我能做些什么来解决它?

1 个答案:

答案 0 :(得分:0)

  

只需将您的触发器从BEFORE INSERT转换为AFTER INSERT

因为在同一个表的DML操作期间,它正在努力确定:NEW.PRODUCT_ID ORDER_DETAILS表的数量总和。