带有触发器的SQL更新插入行

时间:2015-06-16 15:09:17

标签: sql tsql triggers sql-insert

我正在尝试使用表触发器更新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

2 个答案:

答案 0 :(得分:1)

据我所知,这是旧的连接语法,但功能相同。我设置了一个快速测试,但无法重现这个问题,似乎按预期工作。

仅供参考,您应该使用正确的JOIN语法,这种旧的ANSI-89标准已在SQL 2012的某些表单中停止使用。

答案 1 :(得分:0)

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

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

更多加入here的更多示例。

相关问题