2016-05-31 15 views
0

私はデータベースに関連するものについては初めてです。私は学校から宿題を持っています。従業員の給与の更新があるときにトリガーを作成する必要があります。Oracle - トリガーを作成しようとしましたが、コンパイルエラーでトリガーが作成され続けます。

"STAには、従業員の給与が元の給与の20%を超えて変更できないという規則があるとします。この制約を適用するためにトリガsalary_changeを作成します。 salaryinのemployeetableandは、規則に違反したとき」。適切なエラーメッセージを出力し

テーブルの構造は以下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; 
/

答えて

0

あなたは(とすべきである)更新前のレコードを参照するために:oldを使用することができます。

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

私が使用する必要があるとき、私は知っている可能性があります「:を」?私の家庭教師によって与えられた例では、new.emp_salaryが使用されることもありますが、new.emp_salaryが使用されることもあります。 ":"は "="と共に使用されることもあります。 – Lewis

+0

私はold.emp_salaryを追加しましたが、まだコンパイルエラーでトリガーが作成されています。 – Lewis

関連する問題