Oracle - 尝试创建触发器,但不断创建带有编译错误的触发器。

时间:2016-05-31 08:48:33

标签: oracle triggers compilation

我是与数据库相关的新手。我有学校的家庭作业。它需要我在员工薪水更新时创建一个触发器。问题是:

“假设STA有一条规则,规定员工的工资不能超过原工资的20%。创建一个触发器salary_change来强制执行此约束。只要有一个工资更​​新,触发器就会触发并输出一个合适的违反规则时出现错误消息。“

表的结构可用here

下面是我创建的代码,但是编译错误。

create or replace trigger salary_change
before update of emp_salary on employee
for each row
begin
if :new.emp_salary > :emp_salary * 1.2 then
raise_application_error(-20000, ('New salary for employee ' || emp_name || ' is getting more than 20% raise'));
end if;
end;
/

1 个答案:

答案 0 :(得分:0)

您可以(并且应该)在更新之前使用:old来引用记录:

if :new.emp_salary > :old.emp_salary * 1.2 then
    -- Here ---------^