我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于ORA-04091异常的出现原因分析及解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于ORA-04091异常的出现原因分析及解决方案

1、异常出现的场景.

:在使用Hibernate做为项目持久层的情况下,需要对某一张表进行一个扩展,扩展操作便是在该表上创建一个触发器。将表中的数据读入到其他表中。

-4091,ORA-04091: 表 DD123.DO_TABLE_47 发生了变化, 触发器/函数不能读它

SQL语句如下:

Sql代码

drop table tr_table;
create table tr_table( --触发器作用表
tab_id number primary key,
tab_name varchar2(30) NOT NULL
)
create table ts_table as select * from tr_table; --提供扩展功能的表
--定义的触发器,在tr_table表插入和更新数据之后向ts_table表插入当前操作的信息行。
create trigger iu_table
after insert or update on tr_table
for each row
begin
insert into ts_table select * from tr_table t where t.tab_id = :new.tab_id;
end is_table;
--对tr_table执行插入操作,触发ts_table插入操作
insert into tr_table(tab_id,tab_name) values(1,'test');
--弹出错误信息提示
--ORA-04091:表tr_table发生了变化 触发器/函数不能读它
--ORA-06512: 在iu_table line 2
--ORA-04088: 触发器iu_table 执行过程中出错

2、问题分析

:在oracle中执行DML语句的时候是需要显示进行提交操作的。当我们进行插入的时候,会触发触发器执行对触发器作用表和扩展表的种种操作,但是这个时候触发器和插入语句是在同一个事务管理中的,因此在插入语句没有被提交的情况下,我们无法对触发器作用表进行其他额外的操作。如果执行其他额外的操作则会抛出如上异常信息。

3、解决方案

:1,我们知道,出错的原因是因为触发器和DML语句在同一事务管理中,所以方案一便是将触发器和DML语句分成两个单独的事务处理。这里可以使用Pragma autonomous_transaction; 告诉Oracle触发器是自定义事务处理。

SQL语句如下:

Sql代码

create trigger iu_table
after insert or update on tr_table
for each row
declare --这里是关键的地方,在变量申明的地方,指定自定义事务处理。
pragma autonomous_transaction;
begin
insert into ts_table select * from tr_table t where t.tab_id = :new.tab_id;
--这里需要显示提交事务
commit;
end iu_table;
 create trigger iu_table
		after insert or update on tr_table
		for each row
		declare  --这里是关键的地方,在变量申明的地方,指定自定义事务处理。
		pragma autonomous_transaction; 
		begin
			insert into ts_table select * from tr_table t where t.tab_id = :new.tab_id;
		--这里需要显示提交事务
			commit;
		end iu_table;

:2,在Oracle Trigger中有:new,:old两个特殊变量,当触发器为行级触发器的时候,触发器就会提供new和old两个保存临时行数据的特殊变量,我们可以从俩个特殊的变量中取出数据执行扩张表的DML操作。

SQL语句如下:

create trigger iu_table
after insert on tr_table
for each row
begin
insert into ts_table(tab_id,tab_name) values(:new.tab_id,:new.tab_name);
--这里需要注意,要知道不同的触发类型其特殊变量:new和:old保存的值的区别。
--commit; 注意使用方案二,这里不能显示的进行提交操作操作,trigger中在没有声明自定义事务管理的时候,不能执行显示提交。
end iu_table;   

到此这篇关于关于ORA-04091异常的出现原因,以及解决方案的文章就介绍到这了,更多相关ORA-04091异常内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于ORA-04091异常的出现原因分析及解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于ORA-04091异常的出现原因分析及解决方案

目录1、异常出现的场景.2、问题分析3、解决方案1、异常出现的场景.:在使用Hibernate做为项目持久层的情况下,需要对某一张表进行一编程客栈个扩展,扩展操作便是在该表上创建一个触发器。将表中的数据读入到其他表中。-4091,ORA
2023-05-12

Android Force Close 出现的异常原因分析及解决方法

一、原因:forceclose,意为强行关闭,当前应用程序发生了冲突。NullPointExection(空指针),IndexOutOfBoundsException(下标越界),就连Android API使用的顺序错误也可能导致(比如se
2022-06-06

java.lang.NullPointerException异常的几种原因及解决方案

本文主要介绍了java.lang.NullPointerException异常的几种原因及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-18

ClassCastException异常的出现原因和解决方法

ClassCastException异常是Java中的一种运行时异常,表示当一个对象被强制类型转换为不兼容的类型时抛出的异常。出现这种异常的原因通常是因为代码在进行类型转换时,将一个对象转换成了不兼容的类型。解决方法:1. 检查代码中的类型
2023-08-22

出现java.lang.NullPointerException的可能原因及解决方案

出现 java.lang.NullPointerException 错误通常是因为代码中出现了一个空引用,即 null。当尝试对这个空引用进行操作时,就会出现 NullPointerException 错误。以下是可能导致该错误的几个原因:
2023-08-16

阿里云服务器安全检测异常原因分析及解决方案

阿里云服务器作为互联网的重要基础设施,其安全问题一直备受关注。本文将对阿里云服务器安全检测异常进行原因分析,并提出相应的解决方案。阿里云服务器安全检测异常的原因分析:阿里云服务器的安全检测异常可能是由多种原因引起的,例如服务器硬件故障、软件问题、网络问题等。具体来说,以下是一些可能的原因:服务器硬件故障:如果服务
阿里云服务器安全检测异常原因分析及解决方案
2023-12-14

分析和解决空指针异常的原因及方法探讨

空指针异常是在程序运行过程中经常遇到的一种错误。当我们在使用一个空对象的时候,例如调用一个空对象上的方法或访问一个空对象的属性,就会出现空指针异常。本文将分析空指针异常产生的原因,并讨论如何修复空指针异常问题。空指针异常通常是由以下几种原因
分析和解决空指针异常的原因及方法探讨
2023-12-28

分析空指针异常的原因与解决方法

空指针异常的原因及解决方法探析导语:在程序开发过程中,我们经常会遇到一种常见的异常——空指针异常。当我们访问一个空对象的属性或调用空对象的方法时,就会抛出空指针异常。本文将探析空指针异常的原因,并给出相应的解决方法,同时提供具体的代码示例。
分析空指针异常的原因与解决方法
2023-12-28

Android 关于“NetworkOnMainThreadException”问题的原因分析及解决办法

网络收集的原因如下,以及解决办法:我补充总结一下:解决办法一: 在操作网络类(socket连接)的activity的protected void onCreate(Bundle savedInstanceState)函数后面加上下面的代码。
2022-06-06

全面分析MySQL ERROR 1045出现的原因及解决

目录通常从网上都能找到解决方案1.停止服务2.跳过验证3.修改密码4.重启服务原因分析SO 解决办法在命令行输入mysql -u root –p,输入密码,或通过工具连接数据库时,经常出现下面的错误信息,相信该错误信息很多人在使
2022-07-13

Win11红警运行出现FATAL的原因分析及解决方法

出现FATAL错误可能是由于以下原因之一导致的:1. 系统要求不满足:Win11对硬件配置有一定要求,如CPU、内存和存储等,如果您的计算机不满足这些要求,就可能会出现FATAL错误。您可以查阅Win11的系统要求,并确保您的计算机符合这些
2023-09-17

云服务器出现502错误的原因分析和解决方案

云服务器出现502错误不要慌,当云服务器上面的网站出现502错误时,说明服务器作为网关或代理,从上游服务器收到无效响应。本文宵云网络就对502错误进行分析并提出解决方案出现502错误的原因分析将请求提交给网关,如php-fpm执行,但是由于
2023-06-04

win7无法安装ie10的原因分析及解决方案

Windows7版本的IE10相比于IE9,IE10为Windows 7用户带来更快更流畅的浏览体验,完善了硬件加速和Chakra JavaScript引擎。Windows 7版IE10拥有与Windows 8版IE10相同的html5功能
2023-05-29

阿里云企业网关服务器异常原因分析与解决方法

阿里云企业网关是一种高性能、高可靠性的企业级网络设备,但有时候用户可能会遇到服务器异常的情况。本文将探讨阿里云企业网关服务器异常的原因,并提供解决方法。1.硬件故障硬件故障是导致阿里云企业网关服务器异常的常见原因之一。可能的硬件故障包括电源问题、内存故障、硬盘故障等。这些问题通常会导致服务器无法正常启动或运行。例
阿里云企业网关服务器异常原因分析与解决方法
2024-01-01

编程热搜

目录