Sql 触发器已创建,但在插入新条目后不起作用。显示ORA-04091错误

Sql 触发器已创建,但在插入新条目后不起作用。显示ORA-04091错误,sql,oracle,oracle11g,triggers,Sql,Oracle,Oracle11g,Triggers,我已经创建了一个触发器,根据另一个表中的条目将数据插入到另一个表中。触发器已创建,但在表中输入值后,收到以下错误 ORA-04091:表OOMUSER.EMTN\u EVC\u PAIR\u状态正在变化,触发器/函数可能看不到它 ORA-06512:“OOMUSER.PORTSTATUSUPDATE”第22行 ORA-04088:执行触发器“OOMUSER.PORTSTATUSUPDATE”时出错 您的错误消息表明第22行是问题所在: ORA-06512:“OOMUSER.PORTSTATUSU

我已经创建了一个触发器,根据另一个表中的条目将数据插入到另一个表中。触发器已创建,但在表中输入值后,收到以下错误

ORA-04091:表OOMUSER.EMTN\u EVC\u PAIR\u状态正在变化,触发器/函数可能看不到它

ORA-06512:“OOMUSER.PORTSTATUSUPDATE”第22行

ORA-04088:执行触发器“OOMUSER.PORTSTATUSUPDATE”时出错


您的错误消息表明第22行是问题所在:

ORA-06512:“OOMUSER.PORTSTATUSUPDATE”第22行

计算触发器主体源代码的行号并不是一门精确的科学,尤其是当它被粘贴到StackOverflow中时,但是
第22行
指出这一行是问题似乎是合理的:

SELECT COUNT(OVEDS.EMTN_EVC_PAIRID) INTO ACTIVEPAIRB FROM OOM_VW_EMTN_DUALEVC_STATUS OVEDS WHERE OVEDS.EMTN_EVC_PAIRID  

OOM\u VW\u EMTN\u DUALEVC\u STATUS
?如果是,它依赖于哪些表格?我猜这里有
EMTN\u EVC\u PAIR\u STATUS
功能

在你的触发器里,你做了几次插入。这些表中是否有触发这些插入的触发器?如果是这样的话,在emtn_evc_pair_status上这些触发器的某个地方是否有select语句?请阅读以下内容@不,这是emtn\U evc\U配对状态的唯一触发器table@Utsav:我没有使用触发器正在运行的表(EMTN\U EVC\U PAIR\U STATUS),在任何查询中检查是否
OOMUSER。EMTN\U ETN\U CPE\U PORT\U STATUS
没有在
EMTN\U EVC\U PAIR\U STATUS
上插入的触发器。OOM_VW_EMTN_DUALEVC_STATUS是一个视图,它依赖于EMTN_EVC_PAIR_STATUS表中的数据。可以做什么来避免这个问题,也可以使用相同的视图?不是在触发器中,至少不容易。显然,我不理解您试图实现的业务逻辑,但它对于触发器来说似乎太复杂了。您应该考虑使用存储过程来处理所有事务,包括触发插入(S)。
SELECT COUNT(OVEDS.EMTN_EVC_PAIRID) INTO ACTIVEPAIRB FROM OOM_VW_EMTN_DUALEVC_STATUS OVEDS WHERE OVEDS.EMTN_EVC_PAIRID