改成以下代码试一试:
CREATE OR REPLACE TRIGGER up_conflag
BEFORE UPDATE OF excute_num ON sales_control_bill
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
if :new.excute_num >= :old.turn_num then
:new.excute_flag = 'C' //或SELECT 'C' INTO :new.excute_flag FROM DUAL;
end if;
end;
CREATE OR REPLACE TRIGGER up_conflag
BEFORE UPDATE OF excute_num ON sales_control_bill
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
if :new.excute_num >= :old.turn_num then
:new.excute_flag = 'C' //或SELECT 'C' INTO :new.excute_flag FROM DUAL;
end if;
end;
如果想在触发器中修改数据,最好设计成自治的事务:
DECLARE的第一行加上: PRAGMA AUTONOMOUS_TRANSACTION;
在最后COMMIT;
CREATE OR REPLACE TRIGGER up_conflag
after UPDATE OF excute_num ON sales_control_bill
FOR EACH ROW
BEGIN
if :old.excute_num >= :old.turn_num then
update sales_control_bill
set excute_flag = 'C'
where cortrolbill_no = :old.cortrolbill_no;
end if;
end;
我测试过了,但不知道有没有普遍性!
BEFORE UPDATE OF excute_num ON sales_control_bill
FOR EACH ROWBEGIN
if :new.excute_num >= :old.turn_num then
:new.excute_flag: = 'C'; //或SELECT 'C' INTO :new.excute_flag FROM DUAL;
end if;
end;