Oracle触发器表发生了变化 触发器不能读它的解决方法(必看)
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,出现原因,是因为在更新的的表和读取的表是同一个表。CREATE or replace TRIGGER T_userupdateT BEFORE update ON T_user REFERENCING
千家信息网最后更新 2025年01月24日Oracle触发器表发生了变化 触发器不能读它的解决方法(必看)
出现原因,是因为在更新的的表和读取的表是同一个表。
CREATE or replace TRIGGER T_userupdateT BEFORE update ON T_user REFERENCING OLD AS old NEW AS N_ROW FOR EACH ROW DECLARE U_xtfidemp1 varchar(36); u_xtempcode1 varchar(20); u_xtempcodeCount int:=0; U_xtfidempCount int:=0; u_id1 int:=0; BEGIN U_xtfidemp1:=:N_ROW.U_xtfidemp; u_xtempcode1:=:N_ROW.u_xtempcode; u_id1:=:N_ROW.u_id; select count(u_xtempcode) into u_xtempcodeCount from eas.T_user where u_xtempcode is not null and u_xtempcode=u_xtempcode1 and u_id<>u_id1; select count(U_xtfidemp) into U_xtfidempCount from eas.T_user where U_xtfidemp is not null and U_xtfidemp=U_xtfidemp1 and u_id<>u_id1; IF u_xtempcodeCount>0 or U_xtfidempCount>0 THEN RAISE_APPLICATION_ERROR(-20001, 'eas.T_user u_xtempcode,U_xtfidemp,U_GZCode更新数据时有错误,有重复'); END IF; end;
出现错误时,是因为触发器在T_userupdateT在T_user上,触发器内部有读取了T_user所以有错误。
修改如下
CREATE or replace TRIGGER T_userupdateT BEFORE update ON T_user REFERENCING OLD AS old NEW AS N_ROW FOR EACH ROW DECLARE U_xtfidemp1 varchar(36); u_xtempcode1 varchar(20); u_xtempcodeCount int:=0; U_xtfidempCount int:=0; u_id1 int:=0; PRAGMA AUTONOMOUS_TRANSACTION;BEGIN U_xtfidemp1:=:N_ROW.U_xtfidemp; u_xtempcode1:=:N_ROW.u_xtempcode; u_id1:=:N_ROW.u_id; select count(u_xtempcode) into u_xtempcodeCount from eas.T_user where u_xtempcode is not null and u_xtempcode=u_xtempcode1 and u_id<>u_id1; select count(U_xtfidemp) into U_xtfidempCount from eas.T_user where U_xtfidemp is not null and U_xtfidemp=U_xtfidemp1 and u_id<>u_id1; IF u_xtempcodeCount>0 or U_xtfidempCount>0 THEN RAISE_APPLICATION_ERROR(-20001, 'eas.T_user u_xtempcode,U_xtfidemp,U_GZCode更新数据时有错误,有重复'); END IF;COMMIT; end;
多了PRAGMA AUTONOMOUS_TRANSACTION;COMMIT;两句
以上这篇Oracle触发器表发生了变化 触发器不能读它的解决方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
触发器
错误
更新
数据
方法
变化
内容
原因
就是
参考
支持
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界地球都市服务器
合肥投机网络技术有限公司
怎么清除文件夹里的数据库
网络技术网桥思维导图
昌平区网络软件开发价目表
半年能学会软件开发吗
苏州软件开发公司招聘信息
你最想学的网络安全知识
王英建 网络安全
网络安全真实事件案例
电脑服务器非常繁忙
通州区网络技术服务报价
数据库两表对比重复数据
网络安全双sp什么意思
网络安全年报有什么用
水网数据库架构
网络安全素材黑板报
网络安全部署策略
服务器管理口控制台无法打开
湖南造型服务器云主机
网络安全宣传海报免费下载
半年能学会软件开发吗
python完美数据库
数据库系统发展演变
传音控股软件开发笔试
北京网络安全学校
a3网络安全绘画教程视频
智能英语教育系统软件开发
芜湖网络技术 培训
客户最关心服务器的哪些指标