SQL触发器更新另一个表

MeT*_*eTa 2 sql triggers sql-server-2008

我是触发器的新手......任何人都可以帮助我触发器吗?

我有桌子:

Name | Number
Run Code Online (Sandbox Code Playgroud)

当我的表收到类似的查询时,我想写一个触发器

update MyTable 
set Number = Number + 1 
where Name = 'myname'
Run Code Online (Sandbox Code Playgroud)

当此查询运行时,触发器应更新另一个表,例如:

Update MyTable 2 
set Column = 'something' 
where Name = 'myname (above name)
Run Code Online (Sandbox Code Playgroud)

非常感谢你 !

mar*_*c_s 7

您需要UPDATE在表1上编写触发器,以相应地更新表2.

注意:在SQL Server触发器不是每一行被更新一次叫做-他们是所谓的每一次发言,以及内部的"伪"表格Inserted,并Deleted包含多行,所以你需要编写触发时考虑到这一点.

在你的情况下,我写了类似的东西:

-- UPDATE trigger on "dbo.Table1"
CREATE TRIGGER Table1Updated
ON dbo.table1 FOR UPDATE
AS 
BEGIN
    -- update table2, using the same rows as were updated in table1
    UPDATE t2
    SET t2.Column = 'something'
    FROM dbo.Table2 t2
    INNER JOIN Inserted i ON t2.ID = i.ID        
END
GO
Run Code Online (Sandbox Code Playgroud)

诀窍是使用Inserted伪表(其中包含新值UPDATE- 它具有与您的表完全相同的结构,触发器为此编写 - 在这里dbo.Table1)以基于集合的方式 - 将它连接到您dbo.Table2的某些列上有共同点(ID或某事).