首页 > 解决方案 > 当该行发生更改时,SQL Server 2016 更新表中该行的日期时间属性

问题描述

基本上我有一个包含三列的表:Data, DatetimeCreated, DatetimeModified.

每当该行的属性发生更改 时,我都需要更新该DatetimeModified属性。GETDATE()Data

这如何使用UPDATE触发器来完成?任何帮助表示赞赏。

我在 Windows 10 上使用 SQL Server 2016

标签: sqlsql-servertsqltriggers

解决方案


您还需要表中的主键列才能正常工作 - 任何严肃的表都应该有......

然后你可以使用这个:

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()作为最佳实践。


推荐阅读