【问题标题】:SQL Server 2008 R2 - Update Trigger on a table updates a single row/cell in another tableSQL Server 2008 R2 - 表上的更新触发器更新另一个表中的单个行/单元格
【发布时间】:2014-09-11 16:54:10
【问题描述】:

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

(Table1和Table2有一个共同的列(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

【问题讨论】:

  • 需要注意的关键点是,每插入一行,触发器就不会触发一次。您可以通过触发器上下文中的inserted 表访问插入的行。

标签: sql sql-server-2008 triggers


【解决方案1】:

你想的太复杂了:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多