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)
非常感谢你 !
您需要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或某事).