Sql 当触发器尝试查询视图时,表发生变化
我收到ORA-04088:在执行触发器“CUSTOM.CLOSE\u WORK\u FLOW\u ACTIVITY”时出错,我正在尝试编写触发器,如下所示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
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,即使这样也没有帮助。我也不想在这里更新表。我试图从内部查询表的视图中进行查询。