关于触发器更改标志位问题,急,万分感谢

happz 2004-04-30 03:36:49
表sales_control_bill上有个预发数量turn_num ,有个实发数量excute_num
我想实现 excute_num > turn_num 的时候,即实发数量大于预发数量时,执行状态变为结束。下面是我写的触发器,但执行出错,请高手指点。
错误信息:
ORA-04091: 表 JDSNAS.SALES_CONTROL_BILL 发生了变化,触发器/函数不能读
ORA-06512: 在"JDSNAS.UP_CONFLAG", line 3
ORA-04088: 触发器 'JDSNAS.UP_CONFLAG' 执行过程中出错

请高手指点,急,不胜感激
CREATE OR REPLACE TRIGGER up_conflag
after UPDATE OF excute_num ON sales_control_bill
FOR EACH ROW
BEGIN
if :new.excute_num >= :old.turn_num then
update sales_control_bill
set excute_flag = 'C'
where cortrolbill_no = :old.cortrolbill_no;
end if;
end;
...全文
58 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2004-05-06
  • 打赏
  • 举报
回复
CREATE OR REPLACE TRIGGER up_conflag
BEFORE UPDATE OF excute_num ON sales_control_bill
FOR EACH ROW

BEGIN
if :new.excute_num >= :old.turn_num then
:new.excute_flag: = 'C'; //或SELECT 'C' INTO :new.excute_flag FROM DUAL;
end if;
end;
chen_cyh 2004-05-05
  • 打赏
  • 举报
回复
up
maohuijian 2004-05-02
  • 打赏
  • 举报
回复
要想修改触发表的数据,可以在before型的触发器中以:new=values的形式,以update 基表 set .....的形式会产生错误。因为DML触发器不能读变化表的数据。变化表包括与触发器发生连接的表 读,包括select insert delete update
我测试过了,但不知道有没有普遍性!
happz 2004-05-01
  • 打赏
  • 举报
回复
谢谢各位,非常的感谢,因为我现在分值低。有的本次未能给分,真心的感谢各位了!
welyngj 2004-04-30
  • 打赏
  • 举报
回复
不可以自己出发自己。
上面也会报错。
welyngj 2004-04-30
  • 打赏
  • 举报
回复
have a try:
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;
「已注销」 2004-04-30
  • 打赏
  • 举报
回复
补充一下:
如果想在触发器中修改数据,最好设计成自治的事务:
DECLARE的第一行加上: PRAGMA AUTONOMOUS_TRANSACTION;
在最后COMMIT;
「已注销」 2004-04-30
  • 打赏
  • 举报
回复
改成以下代码试一试:
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;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧