Employee(eno, ename, hiredate, salary)
Project (projID, projName, budget)
Emp_Proj (eno, ProjID, assignedDate)编写一个触发器,在更新薪资时计算并打印新旧薪资之间的差额。
我在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;发布于 2016-09-26 17:46:52
在oracle中,你可以用两种方式编写它。此外,您还需要仔细阅读文档。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 := :new.salary - :old.salary;直接更改:new.salary的值--这是不允许的。
https://stackoverflow.com/questions/39694423
复制相似问题