ORA-04091: table xxx is mutating, trigger/function may not see it
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的更多相关文章
- ORA-04091: table xxxx is mutating, trigger/function may not see it
今天同事让我看一个触发器为什么老是报错,当执行DML语句触发触发器后,会报ORA-04091错误:ORA-04091: table xxxx is mutating, trigger/function ...
- ORA-04091: table is mutating, trigger/function may not see it
今天在论坛里发现了一个关于ORA-04091的老帖子,收获良多,特此整理一下 关于ORA-04091: table is mutating, trigger/function may not see ...
- 错误"ORA-04091: table is mutating, trigger/function may not see it"的原因以及解决办法
错误的原因该错误是在编写trigger时常遇到的问题,其根本原因是由于对本表的操作造成的.对于使用了for each row 的触发器,做了DML操作(delete,update,insert),还没 ...
- 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 ...
- PostgreSQL trigger (function) examples
postgres=# \c warehouse_db You are now connected to database "warehouse_db" as user " ...
- 使用Phalcon开发工具碰到的数据库问题"Table 'XXX' doesn't exist in database when dumping meta-data for XXX"
使用Phalcon开发工具,通过命令行生成程序框架 设置好config.php,在对数据库进行读取.保存数据的时候出现了问题“Table 'XXX' doesn't exist in database ...
- SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'xxx' already exists
字面意思 xxx表已存在. 在使用laravel 写同步结构的时候 最好习惯性写个if语句判定是否存在 // 判断数据表是否存在 Schema::hasTable('table'); // 判断数据 ...
- 【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题
问题描述 经过前两篇文章,分别使用VM搭建了Kafka服务,创建了Azure Function项目,并且都在本地运行成功. [Azure Developer]在Azure VM (Windows) 中 ...
- 解决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 ...
随机推荐
- MSP430 G2553 计时/计数器 Timer_A
MSP430G2553包含了两个16-bit Timer_A计时/计数器.本文简单介绍了Timer_A的功能和寄存器使用,本文及后续的随笔部分参考了"Scientific Instrumen ...
- Js复制链接代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C#集合总结
1.为什么引入集合? 因为数组长度是固定的,为了建立一个动态的"数组",所以引入了集合. 2.为什么引入ArrayList 非泛型集合? ArrayList可以填补数组的不足,进行 ...
- unity 加载资源
Unity3D中的资源的处理种类 Unity中的资源资源的处理种类大致分为:Resources.StreamingAssets.AssetBundle Resources 是作为一个Unity的保留文 ...
- WPF 按名称查找控件
1FrameworkElement类FindName方法 使用过程 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindN ...
- MySQL多线程备份工具mydumper 之 RDS外部实例迁移平台
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.Format_description_event问题: BINLOG ' kTXkUxMKAAAALQA ...
- SUBSET
DESCRIPTION:一开始你有一个空集,集合可以出现重复元素,然后有Q 个操作1. add s在集合中加入数字s.2. del s在集合中删除数字s.保证s 存在3. cnt s查询满足a& ...
- Lexicographical Substring Search (spoj7259) (sam(后缀自动机)+第k小子串)
Little Daniel loves to play with strings! He always finds different ways to have fun with strings! K ...
- MySQL数据库密码破解
研究MySQL数据库的加解密方式,在网络攻防过程中具有重要的意义:试想一旦获取了网站一定的权限后,如果能够获取MySQL中保存用户数据,通过解密后,即可通过正常途径来访问数据库:一方面可以直接操作数据 ...
- 安装zlib的过程(Compression requires the (missing) zlib module)(Python2.6升级为2.7出现的问题)
觉得有必要把解决问题的过程写下来 1,因为要安装flask,所以安装pip,所以安装setuptools,所以安装zlib.(具体过程http://www.cnblogs.com/aiyr/p/726 ...