2013-10-25 4 views
1

Я ищу, чтобы создать триггер, который добавляет разницу между DATE_BEGIN и DATE_END в таблице, как только добавляется DATE_END.Trigger on UPDATE определенного поля

Например, скажем, у меня есть таблица со следующими столбцами

ProjectName,Type,DATE_BEGIN,DATE_END,DATE_DIFF

и я хочу DATE_DIFF быть автоматически заполняется разница между DATE_BEGIN и DATE_END как только обновляется DATE_END. Поэтому я уверен, что ищу триггер с чем-то, выполняемым при выполнении UPDATE, но как я могу отслеживать этот конкретный столбец таким образом?

Я немного новичок в триггерах, так что я не уверен, с чего начать ...

ответ

1

Почему бы не использовать вычисленный столбец вместо этого?

Что-то вроде этого:

alter table TableName drop column DATE_DIFF 
alter table TableName add DATE_DIFF as (case when DATE_END is not null then datediff(day, DATE_BEGIN, DATE_END) else null end) 

Если вы не хотите, чтобы разница в днях, выбрать что-то еще в вызове функции datediff().

+0

Это работало отлично для моих нужд. Благодарю. – muttley91

1

Вы проверить:

Вы должны получить date_end от INSERTED (NEW VALUE) и удалений (OLD VALUE) И всякий раз, когда они разные, вы обновить DATE_DIFF

IF ((SELECT DATE_END FROM INSERTED) <> (SELECT DATE_END FROM DELETED)) 

НАЧАТЬ ...

Документов: Using the inserted and deleted Tables