Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
Sql 当触发器尝试查询视图时,表发生变化_Sql_Oracle_Triggers - Fatal编程技术网

Sql 当触发器尝试查询视图时,表发生变化

Sql 当触发器尝试查询视图时,表发生变化,sql,oracle,triggers,Sql,Oracle,Triggers,我收到ORA-04088:在执行触发器“CUSTOM.CLOSE\u WORK\u FLOW\u ACTIVITY”时出错,我正在尝试编写触发器,如下所示 create or replace trigger CLOSE_ACTIVITY BEFORE UPDATE OF STATUS ON ORDERS referencing new as new for each row declare ln_order_count NUMBER:=0; ln_a

我收到ORA-04088:在执行触发器“CUSTOM.CLOSE\u WORK\u FLOW\u ACTIVITY”时出错,我正在尝试编写触发器,如下所示

 create or replace trigger CLOSE_ACTIVITY 
    BEFORE UPDATE OF STATUS ON ORDERS referencing new as new
    for each row
    declare 
    ln_order_count NUMBER:=0;
    ln_act_id_no_sn NUMBER:=0;
    ln_req_id NUMBER:=0;
    ln_wq_id Number;
 BEGIN
     if :new.status='COMPLETE' then
       select request_id into ln_req_id from all_orders where id=:new.id;
   --Useful code
     endif;
end;
这里ORDERS是一个表,而all_ORDERS是一个在ORDERS表上查询的视图。现在当触发器被触发时,我得到了上面提到的错误


有谁能帮我一下吗?

当触发器试图更新它从中读取的表时,会发生变异表错误。在您的情况下,它是订单表

最好避免对这些类型的活动使用触发器,或者使用语句级触发器。如果这两项都不可行,请在更新订单状态后尝试将触发器更改为


当更新完成,然后发出select时,应该可以解决这个问题。(但请确保将其更改为AFTER触发器不会影响您的业务逻辑)

我已尝试使用AFTER,即使这样也没有帮助。我也不想在这里更新表。我试图从内部查询表的视图中进行查询。