Oracle千年难遇的奇特现象,谁见过?(100分)

  • 主题发起人 主题发起人 danng
  • 开始时间 开始时间
D

danng

Unregistered / Unconfirmed
GUEST, unregistred user!
我对一个表做了两个触发器,一个insert触发器和一个delete触发器。
insert触发器记录数据的插入日志,delete触发器记录数据的删除日志。
现在的问题是,在这个表中没有找到这笔数据,但在插入日志表找到有做插入动作,而在删除日志表中未能找到删除动作。
也就是说,正确的执行了插入动作后,数据不翼而飞了,且不是被删除的。两个触发器都正常。

两个触发器代码:
create or replace trigger TR_更新派件回单
before insert on Tb_Backorder
for each row
declare
-- local variables here
v_UserName varchar2(30);
V_Count integer;
v_paytype varchar2(10);
begin
select count(OrderID) into v_Count from TB_BackOrderStatus where OrderID=:New.OrderID and Status='B32'; -- 已签收
if v_Count<>0 then
Raise_Application_Error(-20001,'此运单已录了签收回单,不能再录回单!');
return;
end if;
select count(OrderID) into v_Count from TB_BackOrderStatus where OrderID=:New.OrderID;
if v_Count=0 then
insert into TB_BackOrderStatus(OrderID,ReceSite,Status,Reason,EnterTime)
values(:New.OrderID,:New.ReceSite,:New.Status,:New.CustName||:New.Reason,:New.EnterTime);
else
update TB_BackOrderStatus
set ReceSite=:New.ReceSite,Status=:New.Status,Reason=:New.CustName||:New.Reason,EnterTime=:New.EnterTime
where orderid=:New.Orderid;
end if;
end TR_更新派件回单;

create or replace trigger Tr_Del_BkOrderID
before delete on tb_backorder
for each row
declare
-- local variables here
begin
insert into T_BKORDERDELETE(ORDERID,ENTERTIME)
values(:Old.OrderID,sysdate);
end Tr_Del_BkOrderID;
 
一个个调试,这种问题很好跟的.触发器操作前送个消息出来.
 
找到问题原因。
原设计是此数据表不能进行修改,但程序出现漏洞,把程序的主键字段给改了
最后就查不到了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
811
import
I
I
回复
0
查看
794
import
I
后退
顶部