Обновление триггера 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