3

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

表名是“accounts”。列名是“修改的”(它是一个日期时间,表明该条目最后一次更新的时间)。

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

触发器创建成功,但是当我更新条目时,“修改”列没有改变。也许我错误地使用了 SCOPE_IDENTITY() ?这是我的代码:

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

谢谢!!

4

1 回答 1

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)
于 2013-09-16T14:29:55.140 回答