2014-09-11 72 views
0

當他們更新表中第1列中的單元格時,我必須更新表2中第2列中的單元格以獲取特定用戶標識符(行)但是我不斷得到結果,表2中的整個列都被更新了。任何人都可以告訴我是否以及如何做到這一點?SQL Server 2008 R2 - 更新表上的觸發器更新另一個表中的單個行/單元格

(表1和表2有一個共同的列(用戶ID))

這裏是我的嘗試:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE TRIGGER UPDATE_TABLE2 
    ON dbo.TABLE1 
    AFTER INSERT,DELETE,UPDATE 
AS 
BEGIN 

    SET NOCOUNT ON; 

UPDATE dbo.TABLE2 
SET dbo.TABLE2.COLUMN2 = GETDATE() 
FROM dbo.TABLE2 T2 
join 
dbo.TABLE1 T1 
on T2.userid=T1.userid 
where T2.userid=T1.userid 

END 
GO 
+0

要注意的關鍵點是觸發器每插入一行都不會觸發。您可以通過觸發器上下文中的「插入」表訪問插入的行。 – MattC 2014-09-11 10:16:44

回答

0

你想的太複雜:

UPDATE dbo.TABLE2 
SET dbo.TABLE2.COLUMN2 = GETDATE() 
where dbo.TABLE2.userid= (select userid from inserted) 

,如果你想要做的它只有在更新後,也可以這麼說:

CREATE TRIGGER UPDATE_TABLE2 
    ON dbo.TABLE1 
AFTER UPDATE 
相關問題