2017-05-25 130 views
0

你好我試圖創建一個相對簡單的觸發器,當一個員工被插入到我的表中認證(這是我的多對多關係所在的位置,每個員工可以獲得多個工作的認證,每個工作可以由一個以上的員工完成) 我希望觸發器檢查是否包括插入的記錄,員工現在可以在3個以上的工作中獲得認證,從而提高他10%的工作量。 這是我第一次嘗試,但後來我意識到,我做了什麼影響整個表:如何選擇表中的最後一個插入的記錄SQL中

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

不是答案,但是如果員工不需要3個或更多的工作認證,您可能需要另一個程序來取消加薪。 –

+0

我相信你正在尋找一個輸出語句。 – jmag

+0

因此,對於每次獲得至少三次新認證,他們將獲得額外10%的加薪?如果一個特定的員工有11個認證,他們將獲得8%的薪資增長,這將使薪水增加一倍以上。 –

回答

0

最後插入的記錄位於「插入」表內。

我認爲下面的這個更新將解決這個問題。請記住,只有在第一次認證工作增加到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) 
) 

還記得建立一個刪除觸發器。但是,作爲開發人員,我不會在觸發器中構建此業務規則。

相關問題