日期:2014-05-17  浏览次数:20768 次

求助:一个简单触发器的问题
本帖最后由 E_Java 于 2013-08-02 16:26:34 编辑
行级触发器,在更新一张表的一条记录之后把该条记录的某个字段设为sysdate的月份
create or replace trigger trg_dp_update_dp_detail
after update on dp_detail
referencing old as old new as new
for each row
begin
 update dp_detail set month = (select EXTRACT(MONTH FROM SYSDATE) from dual) where DP_DETAIL_ID = :old.DP_DETAIL_ID;
end;
/

执行的更新的时候触发器执行不成功,包ORA-04091、ORA-06512、ORA-04088错,错误堆栈源显示的是update dp_detail set month = (select EXTRACT(MONTH FROM SYSDATE) from dual) where DP_DETAIL_ID = :old.DP_DETAIL_ID;
这局有错
触发器

------解决方案--------------------
明显的变异表错误...
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

明显的变异表错误...
额,该怎么修改呢

直接:new.month = EXTRACT(MONTH FROM SYSDATE);

after之后不能修改new的值,我换成old也说不能更改old引用的值
 使用前置触发, BEFORE update on dp_detail