Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 表ESPUMA.ORDER\u详细信息正在变化,触发器/函数可能看不到它_Oracle_Triggers_Database Trigger - Fatal编程技术网

Oracle 表ESPUMA.ORDER\u详细信息正在变化,触发器/函数可能看不到它

Oracle 表ESPUMA.ORDER\u详细信息正在变化,触发器/函数可能看不到它,oracle,triggers,database-trigger,Oracle,Triggers,Database Trigger,我有3个表,其中包含以下列: 产品(产品id、图像、名称、价格、创建日期)订单(订单id、金额、客户地址、电子邮件、客户姓名、电话、订单日期、订单编号) 订单详细信息(id、金额、价格、数量、订单id、产品id) 我创建了一个名为PRODUCTS\u salled(product\u id,quantity)的新表和一个名为PRODUCTS\u trigger的触发器,因此每次插入ORDER\u DETAILS后,每个产品的产品id和数量都将插入表PRODUCTS\u salled 这是触发因素

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

产品(产品id、图像、名称、价格、创建日期)
订单(订单id、金额、客户地址、电子邮件、客户姓名、电话、订单日期、订单编号)

订单详细信息(id、金额、价格、数量、订单id、产品id)

我创建了一个名为
PRODUCTS\u salled(product\u id,quantity)
的新表和一个名为
PRODUCTS\u trigger
的触发器,因此每次插入
ORDER\u DETAILS
后,每个产品的产品id和数量都将插入表
PRODUCTS\u salled

这是触发因素:

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;
它显示了这个错误:

ORA-04091: table ESPUMA.ORDER_DETAILS is mutating, trigger/function may not see it 
我能做些什么来解决它

只需将触发器从插入后的
转换为插入前的

因为在同一个表的DML操作期间,它正在努力通过
:新的.PRODUCT\u ID
ORDER\u DETAILS
表来确定数量之和