2016-09-26 45 views
0
Employee(eno, ename, hiredate, salary) 
    Project (projID, projName, budget) 
    Emp_Proj (eno, ProjID, assignedDate) 

編寫一個觸發器來計算並打印薪水更新時新舊工資的差額。有人可以幫助我理解如何在dbms中編寫觸發器嗎?

我在oracle和mysql下面的語句都試過。 但錯誤彈出窗口,如無效的觸發器規範。 有人可以幫助我澄清在任何dbms中觸發器的基本常用語法是什麼?

create trigger update_salary_trig 
    after insert on Employee 
    for each row 
    if(new.salary<>old.salary) 
    new.salary=new.salary-old.salary 
    print new.salary; 
+0

bro查閱手冊 – Drew

回答

0

在oracle中,你可以用2種方式編寫它。您還需要仔細閱讀文檔。 Trigger

檢查方法如下做到這一點:

1)

CREATE OR REPLACE TRIGGER update_salary_trig 
AFTER INSERT ON Employee 
FOR EACH ROW 
declare 
revised_sal number; 
begin 

    If(:new.salary <> :old.salary) then 
    revised_sal := :new.salary - :old.salary;  
    End if; 

    dbms_output.put_line(revised_sal); 
    end; 

2首選)

CREATE TRIGGER update_salary_trig 
AFTER INSERT ON Employee 
FOR EACH ROW 
when (new.salary <> old.salary) 
DECLARE 
    sal_new number; 
begin 
    sal_new := :new.salary - :old.salary; 
    dbms_output.put_line(sal_new); 
    end; 

注:

你不能改變的值:new.salary directl y通過分配:new.salary := :new.salary - :old.salary; - 這是不允許的。

相關問題