Oracle触发器表发生了变化 触发器不能读它的解决方法(必看)
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,出现原因,是因为在更新的的表和读取的表是同一个表。CREATE or replace TRIGGER T_userupdateT BEFORE update ON T_user REFERENCING
千家信息网最后更新 2025年11月12日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安全错误
数据库的锁怎样保障安全
不属于信息网络技术
网络技术具有什么性
抚顺网络技术培训班
南京电子网络技术收费
金涛互联网科技
英雄联盟当前服务器不支持校验
苹果无法连接通话服务器
苏州企业软件开发平台
动画下载软件开发
万全服务器r680重置主板
网络技术职业生涯规划书800
六安设备维护管理软件开发平台
软件开发属于文科专业吗
网络安全主题征文700字
数据库数据添加能直接粘贴吗
计算机网络有线网络技术
软件开发项目管理考什么证
软件开发培训 - 百度
网络安全法11条
sap数据库结构
多ip服务器如何设置请求ip
吉林网络技术服务质量
公安网络安全管理岗位
计算机网络技术员月记
江山农商银行转账服务器异常
深圳手机app软件开发公司
明日之后官方发布服务器的时间
网络安全驱动机构
集群时钟同步服务器
天星餐饮软件开发