SQL Server 2008 R2 - 表上的更新触发器更新另一个表中的单个行/单元

时间:2014-09-11 08:45:48

标签: sql sql-server-2008 triggers

当我们更新表1中column1中的单元格时,我必须更新表2中column2中的单元格以获取特定用户标识(行)。但我不断得到结果,表2中的整个列都已更新。谁能告诉我是否以及如何做到这一点?

(表1和表2有一个共同的列(userid))

这是我的尝试:

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

1 个答案:

答案 0 :(得分:0)

你认为太复杂了:

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

如果你想在UPDATE之后再做,也可以这样说:

CREATE TRIGGER UPDATE_TABLE2
   ON  dbo.TABLE1 
AFTER UPDATE