SQL Server 2016 Обновление атрибута datetime для строки в таблице, когда в этой строке происходит изменение - PullRequest
1 голос
/ 10 апреля 2020

В основном у меня есть таблица с тремя столбцами: Data, DatetimeCreated, DatetimeModified.

Мне нужно обновить атрибут DatetimeModified на GETDATE() каждый раз, когда атрибут Data изменяется для этой строки.

Как это можно сделать с помощью триггера UPDATE? Любая помощь приветствуется.

Я использую SQL Server 2016 на Windows 10

1 Ответ

0 голосов
/ 10 апреля 2020

Вам также понадобится столбец первичного ключа в вашей таблице, чтобы это работало - что в любом случае должна иметь любая серьезная таблица ....

Тогда вы можете использовать это:

CREATE TRIGGER trgUpdateDatetimeModified
ON dbo.YourTableNameHere
AFTER UPDATE
AS
BEGIN
    UPDATE dbo.YourTableNameHere
    SET DatetimeModified = SYSDATETIME()
    FROM Inserted i
    INNER JOIN Deleted d ON d.PrimaryKey = i.PrimaryKey
    WHERE d.Data <> i.Data;
END;

На основе псевдотаблиц Deleted (старые значения до UPDATE) и Inserted (новые значения после UPDATE), доступных внутри триггера, он проверяет, какие строки имеют обновление в столбец Data, и для них обновляется DatetimeModified.

Я бы также рекомендовал начать использовать SYSDATETIME() вместо GETDATE() в качестве лучшей практики.

...