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%的时间触发,即使是第一个示例。