电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

關于ORA-04091異常的出現原因分析及解決方案

瀏覽:2日期:2023-05-30 16:13:45
目錄
  • 1、異常出現的場景.
  • 2、問題分析
  • 3、解決方案

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異常內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Oracle
主站蜘蛛池模板: 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 铝箔-铝板-花纹铝板-铝型材-铝棒管-上海百亚金属材料有限公司 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 特材真空腔体_哈氏合金/镍基合金/纯镍腔体-无锡国德机械制造有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 工业插头-工业插头插座【厂家】-温州罗曼电气 | 全自动变压器变比组别测试仪-手持式直流电阻测试仪-上海来扬电气 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 单锥双螺旋混合机_双螺旋锥形混合机-无锡新洋设备科技有限公司 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 低温等离子清洗机(双气路进口)-嘉润万丰 | 2025第九届世界无人机大会 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 北京环球北美考试院【官方网站】|北京托福培训班|北京托福培训 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 培训无忧网-教育培训咨询招生第三方平台 |