Обновление триггера T-SQL - PullRequest
14 голосов
/ 01 марта 2012

У меня есть таблица с 3 полями [ID, Name, LastUpdated].
LastUpdated имеет значение по умолчанию "GetDate (), поэтому оно автоматически заполняется при добавлении новой записи.

КогдаВместо этого я запускаю UPDATE для TABLE, и я бы хотел, чтобы это поле само сбрасывалось до текущего GetDate ().

CREATE TRIGGER dbo.Table1_Updated
   ON  dbo.Table1
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    UPDATE dbo.Table1 SET LastUpdated = GETDATE()
END
GO

Но поскольку у меня нет предложения WHERE, ВСЕ записи обновляются.

ВОПРОС:
Где бы я мог получить значение идентификатора обновленной записи в триггере ОБНОВЛЕНИЯ?

Будет ли факт обновления полятаблицы внутри триггера, повторно вызвать новое событие триггера (и т. д.)?

Ответы [ 3 ]

25 голосов
/ 02 марта 2012

Из 'INSERTED' таблица INSERTED является общей для обоих триггеров INSERT, UPDATE.

CREATE TRIGGER dbo.Table1_Updated
ON dbo.Table1
FOR INSERT, UPDATE /* Fire this trigger when a row is INSERTed or UPDATEd */
AS BEGIN
  UPDATE dbo.Table1 SET dbo.Table1.LastUpdated = GETDATE()
  FROM INSERTED
  WHERE inserted.id=Table1.id
END
1 голос
/ 02 марта 2012
Update table1
set LastUpdated = getdate()
from inserted i, table1 a
where i.pk1 = a.pk1
0 голосов
/ 10 июня 2019
CREATE TRIGGER dbo.refreshModifyDate 
      ON  tStoreCategoriesImages
      FOR INSERT, UPDATE
AS 
  BEGIN
    SET NOCOUNT ON;
        update t set t.ModifyDate = getdate() from tStoreCategoriesImages t 
        inner join inserted i on i.ID = t.ID
  END
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...