CREATE OR REPLACE TRIGGER Trg_ReimFact
BEFORE UPDATE
ON BP_Order
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;--自制事务
fc varchar2(255);
BEGIN
IF ( :NEW.orderstate = 2
AND :NEW.TransState = 1 ) THEN
BEGIN
UPDATE ReimFactPayee
SET orderstate = 1
WHERE txid = :NEW.txid;
END;
END IF;
IF ( :NEW.orderstate = 1
AND :NEW.TransState = 9
AND :NEW.ErrHandle != 10
) THEN
BEGIN
fc := null;
for rec in (select b.factcode from ReimFactPayee a left join ReimFact b on a.factid = b.factid
where a.txid=:new.txid)loop
fc := rec.factcode;
end loop;
if fc is null then
:new.errhandle := 10;
end if;
UPDATE ReimFactPayee
SET orderstate = 2
WHERE txid = :NEW.txid;
END;
END IF;
commit;--必须以commit结束,正常情况下不需要增加commit
END;