Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как получить значение текущей строки?  [new]
RecklessSinner
Member

Откуда:
Сообщений: 2
Вечер добрый.
Имеется таблица, в которой при изменении значения любого поля поле date_change должно принимать значение этого изменения (в момент занесения должна быть взята текущая дата и занесена в поле). Для этого используется следующий триггер :

ALTER TRIGGER [dbo].[upd]
ON [dbo].[employers]
AFTER UPDATE
AS
IF ( UPDATE(date_change) OR UPDATE(initials) OR UPDATE(phone) OR UPDATE(e_mail) OR UPDATE(id_otdel) OR UPDATE(id_project))
BEGIN
UPDATE employers SET employers.date_change=GETDATE();
END

Суть в том, что при срабатывании триггера дата обновляется во всём столбце, а нужно только в тех строках, в которых были внесены изменения. Как можно получить значение такой строки?
9 июл 14, 19:31    [16283203]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение текущей строки?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Читать про таблицы inserted и deleted.
9 июл 14, 19:44    [16283250]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение текущей строки?  [new]
RecklessSinner
Member

Откуда:
Сообщений: 2
Гавриленко Сергей Алексеевич,
Спасибо, что направили в нужное русло, проблема решена :)
9 июл 14, 22:55    [16283710]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение текущей строки?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
RecklessSinner
в которой при изменении значения любого поля поле date_change должно принимать значение этого изменения (в момент занесения должна быть взята текущая дата и занесена в поле).
UPDATE [dbo].[employers] SET phone=phone WHERE id=128;
Значение поля phone изменилось или нет?
10 июл 14, 10:02    [16284849]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить