使用INSERTED WHERE子句触发

时间:2017-09-19 18:04:29

标签: sql-server tsql triggers

我正在尝试创建一个触发器,在初始更新另一列后更新两列。

这是我到目前为止所做的:

CREATE TRIGGER triggerName 
ON tableName
AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON

    IF UPDATE (columnName)
    BEGIN
        UPDATE tableName
        SET dateColumn = CURRENT_TIMESTAMP,
            userColumn = SUSER_NAME
        FROM INSERTED
        WHERE tableName.PrimaryID = INSERTED.PrimaryID
    END
END

我得到的错误:

  

无效的列名称“SUSER_NAME”。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

SUSER_SNAME函数需要括号:

UPDATE tableName
SET dateColumn = CURRENT_TIMESTAMP,
    userColumn = SUSER_NAME()
FROM INSERTED
WHERE tableName.PrimaryID = INSERTED.PrimaryID;