2010-08-24 2 views
2

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

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

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

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

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

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

Любые идеи?

ответ

4

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

CREATE TRIGGER trig_updateName ON YOUR_TABLE 

FOR UPDATE AS 

    IF NOT UPDATE(Name) 
    BEGIN 

    RETURN 

    END 

    EXEC foo 

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

+0

Poines - sauceofawesome! Теперь, что KILLS меня с триггерами (читай: я сосать на триггеры) заключается в том, что если * any/one-or или more * из строк, которые были произведены, в результатах триггера, это будет сохранен процесс proc. Я никогда не могу окунуться в триггеры + несколько результатов/строк и вынуждена отключить логику в строке. я продолжаю думать, что это один триггер в строке * румянец * .. Я предполагаю, что мне понадобится злой курсор для вызова хранимых процедур в строке ... :( –

+0

@ Pure.Krome: зависит от того, что вы хотите сделать в храните процедуру. Может быть, это должно было быть рассмотрено в отдельном вопросе? –

+0

Yep - я только задумывался вслух .. определенно не расширяя этот вопрос. –

 Смежные вопросы

  • Нет связанных вопросов^_^