触发器使用scope_identity()在MSSQL服务器中自动更新lastModified列

时间:2013-09-16 14:21:36

标签: sql-server triggers

我正在尝试创建一个触发器,在更新特定条目时自动更新表中条目的列。

表名是“accounts”。列名称为“已修改”(它是指示上次更新此条目时的dateTime)。

我正在使用SCOPE_IDENTITY()指向我想要更新的条目。

触发器已成功创建,但是当我更新条目时,“已修改”列不会更改。也许我正在使用SCOPE_IDENTITY()?这是我的代码:

CREATE TRIGGER trg_UpdateModified
ON dbo.accounts
AFTER UPDATE
AS
    UPDATE dbo.accounts
    SET modified = GETDATE()
    WHERE sysID = SCOPE_IDENTITY()

谢谢!

1 个答案:

答案 0 :(得分:9)

使用inserted表告诉您刚刚更新了哪一行( s ):

CREATE TRIGGER trg_UpdateModified
ON dbo.accounts
AFTER UPDATE
AS
    IF UPDATE(modified) RETURN; --Don't react recursively
    UPDATE dbo.accounts
    SET modified = GETDATE()
    WHERE sysID in (select sysID from inserted)