如何在SQL中选择表中最后插入的记录

时间:2017-05-25 20:51:32

标签: sql-server

您好我正在尝试创建一个相对简单的触发器,当员工被插入我的桌面认证时(这是我的多对多关系所在的位置,每个员工都可以被认证为多个工作和每个工作可由多名员工完成) 我希望触发器检查是否包含插入的记录,员工现在已经通过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

我的问题是如何才能获得最后插入的记录?

1 个答案:

答案 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)
)

请记住还要构建删除触发器。但是,作为开发人员,我不会在触发器中构建此业务规则。