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 ...
随机推荐
- DataGridViewComboBoxColumn值无效解决方法
值无效,可能是你下拉框选项,没有这样的值,而你却设置这个值. dataGridView1.Rows[i].Cells[1].Value = "选项一"; 解决方法就是在窗体的构造函 ...
- 开源应用框架BitAdminCore:更新日志20180817
索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/coo ...
- 兼容性测试中如何切换和管理多个JDK版本
本文由作者邹珍珍授权网易云社区发布. 一.测试背景: 项目对外提供JAR包,需要测试该JAR包对不同JDK版本(1.6至1.9版本)的兼容性.下面主要介绍在兼容性测试中,JDK多版本共存时如何配置环境 ...
- 自注意力机制(Self-attention Mechanism)——自然语言处理(NLP)
近年来,注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中.随着注意力机制的深入研究,各式各样的attention被研究者们提出.在2017年6月google机 ...
- Jmeter_RabbitMQ性能测试
[前言] RabbitMQ消息的传递并非使用HTTP协议,而是AMQP协议,因此除非开发暴露一个HTTP请求接口出来,否则无法直接使用HTTP请求发送json串数据,实现数据publish到MQ中. ...
- 替代iframe新逻辑
使用ajax请求.下面是代码逻辑 $.ajax({ url:url, type:'get', dataType: "text", success:function(msg){ $( ...
- Linux磁盘及文件系统(一)
一.磁盘 1.IO接口类型 (1)传输类型分类 并口:同一个线缆可以接多块设备 IDE口:两个,一个主设备,一个从设备 SCSI:宽带:16-1:窄带:8-1 串口:同一个线缆只可以接一个设备 (2) ...
- 孩子们各显神通对付 iOS 12「屏幕使用时间」的限制
简评:2018 年秋季,苹果公司推出了 iOS 12,其中备受好评的一项改变是:增加了屏幕使用时间限制,以减轻沉迷手机的状况.三个月过去后,这项功能似乎并没有对孩子造成太多困扰,道高一尺魔高一丈,孩子 ...
- Java中常用到的文件操作那些事(一)——替换doc文档模板,生成真实合同案例
工作中,我们时常会遇到一些操作文件的操作,比如在线生成合同模板,上传/下载/解析Excel,doc文档转为pdf等操作.本文就已工作中遇到的在线生成合同为例,简要地介绍一种文档替换写法. 本文目的:给 ...
- Protocol Buffers介绍及例子
Protocol Buffers介绍及例子 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或数据交换格式.可用于通讯协 ...