Можно ли выяснить, было ли обновлено определенное поле в Sql Server Trigger? - PullRequest
2 голосов
/ 24 августа 2010

Если у меня есть простая таблица, и я хочу что-то сделать (скажем, выполнить хранимую процедуру), когда столбец (и я знаю столбец, который я хочу найти) изменился.

Возможно ли это?

Версия: SQL Server 2008 R2.

Пример таблицы: -

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

Итак ... если содержимое поля Name изменится, я выполню хранимую процедуру 'Foo'.

Есть идеи?

1 Ответ

4 голосов
/ 24 августа 2010

Использование:

CREATE TRIGGER trig_updateName ON YOUR_TABLE

FOR UPDATE AS

  IF NOT UPDATE(Name) 
  BEGIN

     RETURN

  END

  EXEC foo

Этот триггер будет автоматически выполняться при каждом обновлении одной / нескольких записей в YOUR_TABLE.Функция «UPDATE» используется для проверки, было ли обновлено поле «Name» с помощью запроса «UPDATE», который выполнил триггер «trig_updateAuthor».Если поле не имеет, то триггер возвращает управление серверу SQL.

...