Oracle触发器表发生了变化 触发器不能读它的解决方法(必看)
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,出现原因,是因为在更新的的表和读取的表是同一个表。CREATE or replace TRIGGER T_userupdateT BEFORE update ON T_user REFERENCING
千家信息网最后更新 2024年11月27日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安全错误
数据库的锁怎样保障安全
信阳网络技术预算
两个服务器ssh数据拷贝
手机版原神中的服务器如何更改
网络安全传播大使是什么
台州工业软件开发教程
左手软件开发
华为服务器显卡驱动
数据库查询 1=1
互联网科技嗅
深圳迅雷网络技术公司
网络安全规范整治
无法链接数据库
升腾网络技术服务有限公司
玩的数据库
阿里云数据库自动部署
合肥市网络技术学院
家庭网络安全技巧
光明区国内网络技术开发经验丰富
海南大学网络安全基础试卷
get是请求数据库的吗
木瓜互联网科技幻想儿童画
动漫制作技术软件技术网络技术
服务器的ip安全策略
互联网软件开发需要什么软件
方舟服务器有没有地牢
软件开发公司培训方案
软件开发服务费企业所得税
简能山东网络技术有限公司
剑灵服务器登录后就闪退
数据库平均数的计算公式