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

Откуда:
Сообщений: 54
Подскажите, пожалуйста, как триггером на изменение записать дату изменения текущей записи только в эту же запись? Наверняка ссылки есть на форуме, но я не могу найти
16 сен 04, 15:11    [965121]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
Transiens
Member

Откуда:
Сообщений: 1
update table1
set InDate = getdate()
from table1 inner join inserted on table1.id = inserted.[id]
16 сен 04, 15:19    [965160]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Триггер надо писать с учетом возможности групповой обработки данных. Для этого надо связаться с таблицей inserted по PK.

UPDATE
  SomeTable
SET
  ChangeDate = GETDATE()
FROM
  SomeTable S
  INNER JOIN inserted i ON
  S.KeyFields = i.KeyFields
16 сен 04, 15:19    [965162]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
Sergey_SK
Member

Откуда:
Сообщений: 120
вот пример
update TMed21_STServices 
set sysdatatimelastupdate=getdate()
where [id] in (select [id] from inserted)
id - первичный ключ таблицы
16 сен 04, 15:20    [965169]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
Glory
Member

Откуда:
Сообщений: 104760
При этом хорошо бы еще учитывать возможность того, что могут быть разрешены рекурсивные вызовы триггеров. Чтобы не попасть в эту самую рекурсию
16 сен 04, 15:27    [965213]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
grival
Member

Откуда:
Сообщений: 54
Что такое inserted? Таблица?! При чем здесь другая таблица?
16 сен 04, 15:32    [965241]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
grival
Что такое inserted? Таблица?! При чем здесь другая таблица?


Это виртуальная таблица которая содержит вставленные записи.
Есть ещё deleted таблица содержит удаленные записи.

на триггере при:
Insert - доступна таблица inserted
Update - доступна таблица inserted/deleted
Delete - доступна таблица deleted
16 сен 04, 15:36    [965258]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
grival
Member

Откуда:
Сообщений: 54
Все получилось, спасибо огромное. Подскажите еще, пожалуйста, как узнать имя изменяемого поля?
17 сен 04, 08:57    [966892]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
См. BOL -> IF UPDATE(), COLUMNS_UPDATED(), но однозначно определить, что конкретное поле действительно менялось можно тока сравнивая значения поля в таблицах inserted и deleted.
17 сен 04, 09:11    [966945]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером изменить только текущую запись?  [new]
grival
Member

Откуда:
Сообщений: 54
Спасибо
17 сен 04, 12:06    [967864]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить