Попробуйте использовать триггер после UPDATE
:
CREATE TRIGGER ModDate
ON YourTable
AFTER UPDATE
AS
BEGIN
INSERT INTO dbo.LogTable(DateModified)
VALUES (GETDATE());
PRINT 'New Block Date Added';
END
ОБНОВЛЕНИЕ:
Когда триггер работает, под капотом есть две таблицы:
Данные в этих виртуальных таблицах зависят от того, что вы делаете:
- Операция вставки: при вставке записи виртуальная таблица «вставлена» содержит вновь вставленную запись, где виртуальная таблица «УДАЛЕНО» остается пустой
Операция обновления: при обновлении записи сначала старая запись будетбыть помещен в виртуальную таблицу «DELETED», а обновленная запись удерживается виртуальной таблицей «INSERTED».
Это означает, что вы можете получить старое значение из «DELETED» и текущее значение обновления через «INSERTED»."виртуальный стол.Вы можете запросить их как:
-- To get the old record value
SELECT * FROM DELETED
-- To get the updated value
SELECT * FROM INSERTED
Операция удаления: при попытке удалить какую-либо конкретную запись удаленная запись будет вставлена в виртуальную таблицу «УДАЛЕНО».
Итак, ваш триггер должен выглядеть так:
CREATE TRIGGER ModDate
ON YourTable
AFTER UPDATE
AS
BEGIN
INSERT INTO dbo.LogTable(DateModified, IdUpdatedRow)
SELECT GETDATE(), INSERTED.YourIdOfUpdatedRow;
PRINT 'New Block Date Added';
END