2016-09-26 54 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; - 这是不允许的。

相关问题