我是触发器的新手......任何人都可以帮助我触发器吗?
我有桌子:
Name | Number
当我的表收到像
这样的查询时,我想写一个触发器update MyTable
set Number = Number + 1
where Name = 'myname'
当此查询运行时,触发器应更新另一个表,例如:
Update MyTable 2
set Column = 'something'
where Name = 'myname (above name)
非常感谢!
答案 0 :(得分:7)
您需要在表1上编写UPDATE
触发器,以相应地更新表。
请注意: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
诀窍是使用Inserted
伪表(包含UPDATE
之后的新值 - 它具有与写入触发器的表完全相同的结构 - 这里{{1} }}以基于集合的方式 - 将其加入到dbo.Table1
的某个列上,它们是共同的(dbo.Table2
或其他)。
答案 1 :(得分:1)
在表1上创建一个触发器以进行更新:
CREATE TRIGGER dbo.update_trigger
ON table1
AFTER UPDATE
AS
BEGIN
DECLARE @Name VARCHAR(50)
SELECT @Name=Name FROM INSERTED
Update MyTable 2
SET Column = 'something'
WHERE Name = @Name
END
GO
试试这个;)