create or replace trigger ELEC508_TRIGGER after insert or update or delete on elec508 for each row declare -- local variables herebegin 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的纪录没有添加成功!
after insert or update or delete on elec508
for each row
declare
-- local variables herebegin
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的纪录没有添加成功!
想知道你程序是怎么写的,是不是把这个触发器写在一个大事务里面?如果还有后面的步骤执行不成功从而导致insert回滚的话,触发器是不会回滚的。