我正在尝试使用表触发器更新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
答案 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的更多示例。