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

Sql server 如何在SQL中选择表中最后插入的记录,sql-server,Sql Server,您好,我正在尝试创建一个相对简单的触发器,当一名员工被插入到我的多对多关系所在的我的certified表时,每个员工都可以被认证多个工作,每个工作都可以由多个员工完成 我想让触发器检查一下,包括插入的记录在内,该员工现在是否在3个以上的岗位上获得认证,从而给他加薪10%。 这是我首先尝试的,但后来我意识到我所做的会影响整个桌子: create trigger raise on certified after insert as begin update employees set salar

您好,我正在尝试创建一个相对简单的触发器,当一名员工被插入到我的多对多关系所在的我的certified表时,每个员工都可以被认证多个工作,每个工作都可以由多个员工完成 我想让触发器检查一下,包括插入的记录在内,该员工现在是否在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

我的问题是,如何才能只获取最后一条插入的记录?

最后一条插入的记录在插入的表中

我认为下面的更新将解决这个问题。记住,你应该只在认证职位第一次增加3以上时增加工资。你不应该增加第五或第六份认证工作的工资

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

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

不是答案,但是,如果员工不再获得3份或更多工作的认证,您可能需要另一个程序来取消加薪。我相信您正在寻找一份输出声明。因此,对于每一份新的认证,当他们至少有3份时,他们将获得额外10%的加薪?如果一名员工拥有11项证书,他们将获得8.10%的加薪,这将是他们工资的两倍多。