CREATE OR REPLACE TRIGGER bearing_state_update_trig
before UPDATE OF state ON res_bearing
REFERENCING NEW AS new_res_bearing OLD AS old_res_bearing
FOR EACH ROWBEGIN
IF ( :new_res_bearing.state = 99 ) THEN -- 轴承报废
:new_res_bearing.scrap_date := sysdate;
END IF;END;
/
before UPDATE OF state ON res_bearing
REFERENCING NEW AS new_res_bearing OLD AS old_res_bearing
FOR EACH ROWBEGIN
IF ( :new_res_bearing.state = 99 ) THEN -- 轴承报废
:new_res_bearing.scrap_date := sysdate;
END IF;END;
/
解决方案 »
- 数据转移
- 创建存储过程出错了,求解答
- Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
- 求一SQL语句
- SQL中select into语句在oracle中的用法
- 如何不通过用户名和密码用SQLPLUS登录数据库?
- 我不小心删了一批数据,而且commit了,怎么把数据找回来?
- 关于VB连按ORACLE数据库
- 如何去掉ORACLE客户端tnsname 后面的域名
- 创建dblink后报ORA-12560
- 联机日志损坏,怎么恢复?
- 有没有好的办法得到ORACLE实例名,数据库名称!
before UPDATE OF state ON res_bearing
REFERENCING NEW AS new_res_bearing OLD AS old_res_bearing
FOR EACH ROWBEGIN
IF ( :new_res_bearing.state = 99 ) THEN -- 轴承报废
:new_res_bearing.state:= 99;
:new_res_bearing.scrap_date := sysdate;
END IF;END;
/
小弟菜!
在触发器中不需进行条件判断么?bearing_id字段为表的主关键字?
能否帮解释一下?
:new_res_bearing.state := 99;
:new_res_bearing.scrap_date := sysdate; END IF;
ORA-04084: 无法更改此触发器类型的NEW值
修改为:
before UPDATE ON res_bearing
CREATE OR REPLACE TRIGGER bearing_state_update_trig
AFTER UPDATE OF state ON res_bearing -- 只在state字段发生改变时触发,为什么
-- 去掉OF state ??
REFERENCING NEW AS new_res_bearing OLD AS old_res_bearing
FOR EACH ROW
...
拜托解释一下?
ORA-04084: 无法更改此触发器类型的NEW值
出现上述错误!
:new_res_bearing.state := 99;
去掉此句:new_res_bearing.state := 99;
ORA-04084: 无法更改此触发器类型的NEW值
还是出现上述错误!
多谢!
BEFORE UPDATE OF state 是在before之前进行触发器操作主要取觉于用于在update前操作还是update后操作
多谢!