您好我正在尝试创建一个相对简单的触发器,当员工被插入我的桌面认证时(这是我的多对多关系所在的位置,每个员工都可以被认证为多个工作和每个工作可由多名员工完成) 我希望触发器检查是否包含插入的记录,员工现在已经通过3个以上的工作认证,给他10%的加薪。 这是我先尝试但后来我意识到我所做的事影响着整个桌子:
create trigger raise
on certified
after insert
as
begin
update employees set salary = salary + (salary*0.1)
where (select count(job_id) from certified where empid = (select empid from
inserted) group by empid)>3
end
我的问题是如何才能获得最后插入的记录?
答案 0 :(得分:1)
最后插入的记录在"插入"表
我认为下面的更新将解决问题。请记住,只有在第一次认证工作增加到3以上时才应该增加工资。你不应该增加第5或第6个认证工作的工资。
update employees set salary=salary + (salary*0.1)
where empid in
(select empid from certified where empid in
(select empid from inserted) and (select count(job_id)
from certified b
where b.empid=certified.empid)=3+
(select count(job_id) from inserted
where inserted.empid=certified.empid)
)
请记住还要构建删除触发器。但是,作为开发人员,我不会在触发器中构建此业务规则。