2013-05-27 74 views
1

我有關於sql中的觸發器的簡單問題。通過使用MS SQL中的觸發器更新字段

我是全新的,我不知道如何處理它。

我有一個與shiftid,starttime停止時間和lastupdate myshift表。

create trigger ShiftTriggerr on myshift for update as 
if update(stoptime) 
update myshift set lastupdated = getdate() 

我想要什麼時停止時間將更新,lastupdate字段將更新與getdate()。

但是當我運行它不更新一行,但更新所有行。我不知道如何在這個觸發適用檢查

回答

2

您需要使用INSERTED虛擬表:

CREATE TRIGGER dbo.ShiftTriggerr 
ON dbo.myshift AFTER UPDATE 
AS 
BEGIN 
    SET NOCOUNT ON; 
    IF UPDATE(stoptime) 
    BEGIN 
     UPDATE A 
     SET lastupdated = getdate() 
     FROM dbo.myshift A 
     INNER JOIN INSERTED B 
      ON A.shiftid = B.shiftid 
    END 
END 
0

myshift 應該定義主鍵,如果是shiftId,那麼,

create trigger ShiftTriggerr on myshift for update as   
    update m 
     set lastupdated = getdate() 
    From myshift m Join inserted i 
     on i.shiftId = m.shiftId