SQL更新插入带触发器的行

我试图用表触发器更新SQL中刚刚插入的行。 以下是触发器。 看来这只会更新已经插入的行,而不是刚插入的行。 我究竟做错了什么?

ALTER TRIGGER [dbo].[TRG_DIM_Employee]
ON [dbo].[DIM_Employee]
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON
    UPDATE DIM_Employee
    SET ParentEmployeeKey = i.EmployeeKey
    FROM INSERTED i
    WHERE DIM_Employee.EmployeeId = i.EmployeeId
END

您的更新声明不完全正确。 您需要使用插入的表格行来加入表格。

ClientID int,
ALTER TRIGGER [dbo].[TRG_DIM_Employee]
ON [dbo].[DIM_Employee]
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON

    UPDATE emp
    SET emp.ParentEmployeeKey = i.EmployeeKey
    FROM  DIM_Employee emp
    JOIN INSERTED i on emp.EmployeeId = i.EmployeeId
END

更多加入更新的例子在这里加入。


据我所知,这是旧的连接语法,但在功能上是等同的。 我建立了一个快速测试,但不能重现这个问题,似乎按预期工作。

仅供参考,您应该转向使用正确的JOIN语法,旧的ANSI-89标准已在SQL 2012中以某些形式停用。

链接地址: http://www.djcxy.com/p/94677.html

上一篇: SQL update inserted row with trigger

下一篇: Sqlite Update query using a subquery