是否有可能在Sql Server Trigger中确定某个特定字段是否已更新?

时间:2010-08-24 02:49:42

标签: sql-server triggers sql-server-2008-r2 onupdate

如果我有一个简单的表,并且我希望在列(我知道要查找的列)发生更改时执行某些操作(例如执行存储过程)。

这可能吗?

版本:SQL Server 2008 R2。

示例表: -

ID INTEGER PRIMARY KEY
Name NVARCHAR(100) NOT NULL
Age TINYINT NOT NULL
HairColour TINYINT NOT NULL

所以..如果 Name 字段的内容发生变化,那么我将执行存储过程'Foo'。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

使用:

CREATE TRIGGER trig_updateName ON YOUR_TABLE

FOR UPDATE AS

  IF NOT UPDATE(Name) 
  BEGIN

     RETURN

  END

  EXEC foo

每当我们更新YOUR_TABLE中的一个/多个记录时,就会自动执行此触发器。 “UPDATE”函数用于检查“名称”字段是否已由执行“trig_updateAuthor”触发器的“UPDATE”查询更新。如果field没有,则触发器将控制权返回给SQL server。