Triggers 仅当至少有一列(特定列除外)已更改时,才执行SQL触发器的操作

Triggers 仅当至少有一列(特定列除外)已更改时,才执行SQL触发器的操作,triggers,sql-server-2008-r2,Triggers,Sql Server 2008 R2,我得到一个表Table1定义为: | ID | Foo | Bar | Foobar | | Asdf | Qwertz | 另一个表表2定义如下: | ID | Foo | Bar | Foobar | | Asdf | Qwertz | 现在,我已经成功创建了一个触发器,一旦此表中的某些内容发生更改,它就会更新另一个表中的条目: CREATE TRIGGER MyFancyTrigger ON [dbo].[Table1] AFTER UPDATE AS UP

我得到一个表
Table1
定义为:

| ID | Foo | Bar | Foobar |
| Asdf | Qwertz |
另一个表
表2
定义如下:

| ID | Foo | Bar | Foobar |
| Asdf | Qwertz |
现在,我已经成功创建了一个触发器,一旦此表中的某些内容发生更改,它就会更新另一个表中的条目:

CREATE TRIGGER 
  MyFancyTrigger 
ON 
  [dbo].[Table1] 
AFTER UPDATE 
AS 
  UPDATE 
    [dbo].[Table2] 
  SET 
    Asdf = NEWID() 
  WHERE 
    Qwertz = 'SomeConstant'
到目前为止,这个触发器仍然有效。我希望以这种方式更改触发器,使其仅在列
Foobar
之外的任何内容被更改时执行更新查询。如果一个列随列
Foobar
一起更改,它也应该更新
Table2

示例

  • updatetable1 SET Foobar=NEWID()
    不应更改
    Table2
  • 更新表1 SET Foo=NEWID()
    应更改
    表2
  • 更新表1 SET Foo=NEWID(),Foobar=NEWID()
    应更改
    表2
我试着用
如果COLUMNS\u UPDATED()>1或NOT UPDATE(Foobar)
这样做,但似乎不起作用。有什么提示吗


我正在使用SQL Server 2008 R2。

我想知道当您“尝试使用IF COLUMNS_UPDATED()>1或NOT UPDATE(Foobar)”时发生了什么?这种方法应该有效。它只是触发更新,就好像
if
将丢失一样。100%的时间触发,即使是第一个示例。