Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as tbcs SQL>
SQL>
SQL> drop trigger tbcs.TRG_CJW_TEST; drop trigger tbcs.TRG_CJW_TEST ORA-04080: trigger 'TRG_CJW_TEST' does not exist
SQL> drop table tbcs.cjw_test; drop table tbcs.cjw_test ORA-00942: table or view does not exist
SQL> create table cjw_test
2 (
3 itemid1 varchar2(10),
4 itemid2 varchar2(10),
5 itemid3 varchar2(10)
6 ); Table created
SQL> insert into cjw_test values('1','1','1'); 1 row inserted
SQL> commit; Commit complete /*
对于after 类型的 for each row 级别的triggers,不论哪种insert语句触发了trigger,
都不允许在 trigger 中访问本trigger所依赖的table的
*/ SQL> create or replace trigger trg_cjw_test
2 after insert on tbcs.cjw_test
3 for each row
4 declare
5 i number:=0;
6 begin
7 select count(1) into i from tbcs.cjw_test;
8 end trg_cjw_test;
9 / Trigger created SQL> insert into cjw_test values('1','1','1'); insert into cjw_test values('1','1','1') ORA-04091: table TBCS.CJW_TEST is mutating, trigger/function may not see it
ORA-06512: at "TBCS.TRG_CJW_TEST", line 4
ORA-04088: error during execution of trigger 'TBCS.TRG_CJW_TEST' SQL>
SQL>
/*
对于before 类型的 for each row 级别的triggers,如果使用 insert into ... values 语句触发此trigger ,
则在trigger 中访问本table没有问题;但如果使用 insert into select .. from 语句触发此trigger ,
则在trigger 中访问本table就报ora-04091错误;
*/ SQL> create or replace trigger trg_cjw_test
2 before insert on tbcs.cjw_test
3 for each row
4 declare
5 i number:=0;
6 begin
7 select count(1) into i from tbcs.cjw_test;
8 end trg_cjw_test;
9 / Trigger created SQL> insert into cjw_test values('1','1','1'); 1 row inserted SQL> commit; Commit complete SQL>
SQL> create or replace trigger trg_cjw_test
2 before insert on tbcs.cjw_test
3 for each row
4 declare
5 i number:=0;
6 begin
7 insert into tbcs.cjw_test
8 select '2','2','2' from dual;
9 end trg_cjw_test;
10 / Trigger created SQL> insert into cjw_test values('1','1','1'); insert into cjw_test values('1','1','1') ORA-04091: table TBCS.CJW_TEST is mutating, trigger/function may not see it
ORA-06512: at "TBCS.TRG_CJW_TEST", line 4
ORA-04088: error during execution of trigger 'TBCS.TRG_CJW_TEST'
ORA-06512: at "TBCS.TRG_CJW_TEST", line 4
ORA-04088: error during execution of trigger 'TBCS.TRG_CJW_TEST' SQL> SQL>
/*
上面实验中使用before,我们在仅插入一条数据的情况下,并没有报错,现在试一下插入多条数据的情况
*/
SQL> create or replace trigger trg_cjw_test
2 before insert on tbcs.cjw_test
3 for each row
4 declare
5 i number:=0;
6 begin
7 select count(1) into i from tbcs.cjw_test;
8 end trg_cjw_test;
9 / Trigger created SQL>
SQL> create table cjw_test_bak as select * from cjw_test; Table created
SQL> insert into cjw_test_bak values('2','1','1'); 1 row inserted
SQL> insert into cjw_test_bak values('3','1','1'); 1 row inserted
SQL> insert into cjw_test_bak values('4','1','1'); 1 row inserted SQL> commit; Commit complete SQL> insert into cjw_test select * from cjw_test_bak; insert into cjw_test select * from cjw_test_bak ORA-04091: table TBCS.CJW_TEST is mutating, trigger/function may not see it
ORA-06512: at "TBCS.TRG_CJW_TEST", line 4
ORA-04088: error during execution of trigger 'TBCS.TRG_CJW_TEST' SQL>

ORA-04091: table xxx is mutating, trigger/function may not see it的更多相关文章

  1. ORA-04091: table xxxx is mutating, trigger/function may not see it

    今天同事让我看一个触发器为什么老是报错,当执行DML语句触发触发器后,会报ORA-04091错误:ORA-04091: table xxxx is mutating, trigger/function ...

  2. ORA-04091: table is mutating, trigger/function may not see it

    今天在论坛里发现了一个关于ORA-04091的老帖子,收获良多,特此整理一下 关于ORA-04091: table is mutating, trigger/function may not see ...

  3. 错误"ORA-04091: table is mutating, trigger/function may not see it"的原因以及解决办法

    错误的原因该错误是在编写trigger时常遇到的问题,其根本原因是由于对本表的操作造成的.对于使用了for each row 的触发器,做了DML操作(delete,update,insert),还没 ...

  4. Can’t update table ‘xxx’ in stored function/trigger because it is already used by statement which invoked this stored function/trigger

    MySQL: Solution for ERROR 1442 (HY000): Can't update table 'xxx' in stored function/trigger because ...

  5. PostgreSQL trigger (function) examples

    postgres=# \c warehouse_db You are now connected to database "warehouse_db" as user " ...

  6. 使用Phalcon开发工具碰到的数据库问题"Table 'XXX' doesn't exist in database when dumping meta-data for XXX"

    使用Phalcon开发工具,通过命令行生成程序框架 设置好config.php,在对数据库进行读取.保存数据的时候出现了问题“Table 'XXX' doesn't exist in database ...

  7. SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'xxx' already exists

    字面意思 xxx表已存在. 在使用laravel  写同步结构的时候 最好习惯性写个if语句判定是否存在 // 判断数据表是否存在 Schema::hasTable('table'); // 判断数据 ...

  8. 【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题

    问题描述 经过前两篇文章,分别使用VM搭建了Kafka服务,创建了Azure Function项目,并且都在本地运行成功. [Azure Developer]在Azure VM (Windows) 中 ...

  9. 解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。

    解决mysql Table 'xxx' is marked as crashed and should be repaired的问题. 某个表在进行数据插入和更新时突然出现Table 'xxx' is ...

随机推荐

  1. 解决json结合struts2时,Class org.apache.struts2.json.JSONWriter can not access a member of * 的问题

    在使用json的时候,产生的一个错误,查了一下资料,原来是struts2和json一起使用的时候,才产生的问题,虽然不影响程序的运行,但是总是会有一些异常的日志产生,并且,这个也会增加程序的负担. 原 ...

  2. pycharm中安装可以贴图片的Markdown插件

    方法一:(测试成功) 先安装官方推荐的Markdown support插件,再安装Paste images into MarkDown 如果Paste images into MarkDown插件在线 ...

  3. RoadFlowCore工作流引擎快速入门

    RoadFlow新建一个流程分为以下几步: 1.建表 在数据库建一张自己的业务表(根据你自己的业务需要确定表字段,如请假流程就有,请假人.请假时间.请假天数等字段),数据表必须要有一个主键,主键类型是 ...

  4. Sql语法高级应用之四:使用视图实现多表联合数据明细

    之前章节我们讲到:如果某个表的数据是多个表的联合,并且存在列与列的合并组成新列,用视图是最好的方案. 下面我分享两个个真实的SQL语句案例 USE Wot_Inventory GO FROM sys. ...

  5. AndroidSDK下载

    C:\Windows\System32\drivers\etc\hosts74.125.237.1 dl-ssl.google.com

  6. web负载均衡【总结归纳所有看过的资料的理论】

    web负载均衡 在有些时候进行扩展是显而易见的,比如下载服务由于带宽不足而必须进行的扩展,但是,另一些时候,很多人一看到站点性能不尽如人意,就马上实施负载均衡等扩展手段,真的需要这样做吗?当然这个问题 ...

  7. 【flask macro】No caller defined

    https://segmentfault.com/q/1010000005352059/a-1020000005352912 先码着 有时间了再换成caller() 先用老方法吧...

  8. angular核心原理解析3:指令的执行过程

    指令的执行过程分析. 我们知道指令的执行分两个阶段,一个是compile,一个是link. 我们可以在指令中自定义compile和link. 首先,我们来讲解如何自定义link函数 举个例子: < ...

  9. (一)Python装饰器的通俗理解

    在学习Python的过程中,我相信有很多人和我一样,对Python的装饰器一直觉得很困惑,我也是困惑了好久,并通过思考和查阅才能略有领悟,我希望以下的内容会对你有帮助,我也努力通过通俗的方式使得对Py ...

  10. Eclipse中创建SpringBoot项目流程,及报错解决方案

    1.下载最新的Eclipse(老版本的有可能不包含springBoot插件),然后在help中打开Eclipse MarketPlace,在Spring Marketplace 中搜索SpringBo ...