Обновление триггера T-SQL

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

Когда я вместо этого запускаю UPDATE в TABLE, я бы хотел, чтобы это поле reset было связано с текущим 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, все записи обновляются.

Вопрос:
Где я могу получить значение идентификатора обновленной записи в триггере UPDATE?

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

Ответ 1

От "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

Ответ 2

Update table1
set LastUpdated = getdate()
from inserted i, table1 a
where i.pk1 = a.pk1

Ответ 3

CREATE TRIGGER dbo.refreshModifyDate ON tStoreCategoriesImages FOR INSERT, ОБНОВЛЕНИЕ, КАК НАЧИНАЕТСЯ УСТАНОВИТЬ; обновить t установить t.ModifyDate = getdate() из tStoreCategoriesImages t вставлено внутреннее соединение я на i.ID = t.ID END GO