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)
valuesNew.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)
valuesOld.OrderID,sysdate);
end Tr_Del_BkOrderID;
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)
valuesNew.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)
valuesOld.OrderID,sysdate);
end Tr_Del_BkOrderID;