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

时间:2015-02-06 14:47:13

标签: triggers sql-server-2008-r2

我有一张表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。

0 个答案:

没有答案