【发布时间】:2017-06-15 10:48:51
【问题描述】:
我有一个包含 3 列 eid、salary、newsal 的表格。
我已经为所有员工插入了 eid 和薪水。 现在,如果我更新任何员工的薪水,我想要一个触发器,该触发器直接将该员工的薪水增加 20% 并将其存储到 newsal 列中。
我使用了触发器:
create or replace trigger pp1
after update on empsal
for each row
BEGIN
:new.newsal := :old.sal*1.2;
END;
我不能按照它说的执行这个触发器
错误报告:ORA-04084:无法更改此触发器的新值 类型 04084. 00000 - “无法更改此触发器类型的新值” *原因:新的触发变量只能在前行更改 插入或更新触发器。 *操作:更改触发器类型或删除变量引用。
我的表定义为:
> create table empsal(empno varchar2(8),sal number,newsal number,primary
> key(empno));
【问题讨论】:
-
您不能将触发器更改为
before update而不是after update,就像错误消息中所说的那样吗?如果您使用after update,那么您可能无法更新该值?
标签: sql oracle oracle-sqldeveloper