改成以下代码试一试:
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;
解决方案 »
- 存储过程里面几个小问题?
- js只可已输入中文验证,本地测试可以,手机浏览器无法识别,不能使用?求解决方案
- 求一句sql
- 如何对两条完全相同的记录,只取其中的一条记录(含有Blob字段)?
- 请问哪有《数据库原理、编程与性能》这本书的中文版下载?
- 请教一个oracle触发器的问题
- A表删除记录触发B表删除,而B表删除又触发A表字段更新。。。可以吗?
- 高分求教,在线等.ora_12571:tns:包写入程序失败
- Oracle Designer是否是最好的基于Oracle9i的开发工具,能否给个简要介绍,最新版本多少,那里可以下载?!
- 关于自动递增字段
- 请问大侠:怎样在数据库中产生一个唯一列值!
- 这个过程怎样写
如果想在触发器中修改数据,最好设计成自治的事务:
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;