我有一张表Table1
定义为:
| ID | Foo | Bar | Foobar |
另一个表Table2
已被定义为:
| Asdf | Qwertz |
我现在已成功创建了一个触发器,只要此表中的某些内容发生更改,就会更新另一个表中的条目:
CREATE TRIGGER
MyFancyTrigger
ON
[dbo].[Table1]
AFTER UPDATE
AS
UPDATE
[dbo].[Table2]
SET
Asdf = NEWID()
WHERE
Qwertz = 'SomeConstant'
此触发器到目前为止有效。我想以这种方式更改触发器,它只执行更新查询,如果至少除列Foobar
之外的任何内容都已更改。如果列已更改且列Foobar
已更改,则应更新Table2
。
示例:
UPDATE Table1 SET Foobar = NEWID()
应该不更改Table2
。UPDATE Table1 SET Foo = NEWID()
应更改Table2
。UPDATE Table1 SET Foo = NEWID(), Foobar = NEWID()
应更改Table2
。我尝试用IF COLUMNS_UPDATED() > 1 OR NOT UPDATE(Foobar)
做这件事,但这似乎不起作用。任何提示?
我正在研究SQL Server 2008 R2。