使用触发器后目标表数据正常添加了,源表数据反而没添加成功

uucyc 2009-09-04 09:57:36
使用触发器,目标表数据记录正常被触发器添加了,源表数据记录反而没添加成功.但不是每次都发生,目前使用发现,1万个执行结果,大约120个左右出现上述问题,很郁闷,不知为什么.
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
given_chi 2009-09-08
  • 打赏
  • 举报
回复
按道理说ORACLE处理触发器还是比较成熟的啊。怎么也会有这种问题?
想知道你程序是怎么写的,是不是把这个触发器写在一个大事务里面?如果还有后面的步骤执行不成功从而导致insert回滚的话,触发器是不会回滚的。
uucyc 2009-09-08
  • 打赏
  • 举报
回复
有可能哦,这个很有可能,应该是触发器没有回滚的问题,我来测试一下,谢谢提醒!
uucyc 2009-09-07
  • 打赏
  • 举报
回复
没有提示,关键是不是每次都错,只有1%-2%左右的几率
跟踪都跟不到
怀疑是触发器处理事务的性能问题
小灰狼W 2009-09-07
  • 打赏
  • 举报
回复
没有添加成功也没错误提示?
还有你是怎么确认哪些没有添加成功的?
真是这样的话,是很奇怪...
uucyc 2009-09-07
  • 打赏
  • 举报
回复
create or replace trigger ELEC508_TRIGGER
after insert or update or delete on elec508
for each row
declare
-- local variables here

begin
case
when inserting then

INSERT INTO elec396 values(elec396_sequence.nextval,:new.nsrsbh,:new.sssq,:new.qsrq,:new.jzrq,:new.tbrq,:new.a39,:new.a31,:new.a40,:new.a41,:new.a42,:new.a43,:new.a3,:new.a4,:new.a5,:new.a8+:new.a9+:new.a32,:new.a11,:new.a12,:new.a14,:new.a17,:new.a15,:new.a22+:new.a23+:new.a24,:new.a25,:new.a26,:new.a13,:new.a30,:new.a18 );

when updating THEN

update elec396 set a1=:new.a39,a2=:new.a31,a3=:new.a40,a4=:new.a41,a5=:new.a42,a6=:new.a43,a7=:new.a3,a8=:new.a4,a9=:new.a5,a10=:new.a8+:new.a9+:new.a32,a11=:new.a11,a12=:new.a12,a13=:new.a14,a14=:new.a17,a15=:new.a15,a16=:new.a22+:new.a23+:new.a24,a17=:new.a25,a18=:new.a26,a19=:new.a13,a20=:new.a30,a21=:new.a18 where (nsrsbh=:old.nsrsbh) and (sssq=:old.sssq) ;

when deleting THEN

delete from elec396 where (nsrsbh=:old.nsrsbh) and (sssq=:old.sssq);


end case;
end;

这是触发器代码,主要是在ELEC508表在添加时,触发根据该表的一些值计算后添加入elec396
但是,竟然会出现elec396 数据添加成功,而源表ELEC508的纪录没有添加成功!
liuyi8903 2009-09-04
  • 打赏
  • 举报
回复
啊? 你的触发器怎么写的?

另外,alert中有什么错误没?

inthirties 2009-09-04
  • 打赏
  • 举报
回复
你的源表和目标表指的分别是什么,

把你的trigger贴上来看看。

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧