如果更新的列包含特定列,则检入触发器

时间:2016-06-06 07:39:37

标签: sql-server

如果我的“状态”列被更改,我想检查触发器内部。我尝试了UPDATED_COLUMNS,但它给了我更新的列索引,我不能依赖它们,因为表的结构可能会及时改变。

1 个答案:

答案 0 :(得分:1)

只需使用WHERE子句比较Inserted(新值)和Deleted(旧值)伪表中的此特定列 - 如果值不是同样,该列事实上已由您的UPDATE声明更新:

CREATE TRIGGER YourUpdateTrigger
ON dbo.YourTable
FOR UPDATE
AS
    -- do something useful here....
    SELECT (columns)
    FROM Inserted i
    INNER JOIN Deleted d ON i.PrimaryKeyColumn = d.PrimaryKeyColumn
    -- check if "Status" column has changed in the "UPDATE"
    WHERE i.Status <> d.Status