创建触发器时无法绑定多部分标识符"inserted.Id"

nar*_*cha 3 sql-server

我试图在SQL Server 2012中的表上创建一个触发器,但它给出了如下错误

"多部分标识符"已插入.Id"无法绑定",

我正在执行的查询是

CREATE TRIGGER dbo.[TR_t_documents_InsertUpdateDelete] ON 

dbo.[t_documents] AFTER INSERT, UPDATE, DELETE
AS
BEGIN 

    UPDATE dbo.[t_documents]
    SET dbo.[t_documents].[UpdatedAt] = CONVERT(DATETIMEOFFSET, SYSUTCDATETIME()) 
    FROM
        INSERTED
    WHERE inserted.[Id] = dbo.[t_documents].[Id]
END
Run Code Online (Sandbox Code Playgroud)

这在SQL Server 2014中成功执行.

任何人都可以帮助我为什么在SQL Server 2012中发生这种情况?

Dav*_*idG 7

这是由于您对数据库的排序规则.在这种情况下,您使用区分大小写的排序规则,因此表名称必须一致.对于虚拟触发器表,这些表必须是大写的,例如:

CREATE TRIGGER dbo.[TR_t_documents_InsertUpdateDelete] ON 

dbo.[t_documents] AFTER INSERT, UPDATE, DELETE
AS
BEGIN 

    UPDATE dbo.[t_documents]
    SET dbo.[t_documents].[UpdatedAt] = CONVERT(DATETIMEOFFSET, SYSUTCDATETIME()) 
    FROM
        INSERTED
    WHERE INSERTED.[Id] = dbo.[t_documents].[Id]
    --    ^^^^^^^^
    --      THIS!
END
Run Code Online (Sandbox Code Playgroud)