我正在尝试使用表触发器来更新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发布于 2015-06-17 01:30:46
据我所知,这是旧的连接语法,但在功能上是等效的。我设置了一个快速测试,但不能重现这个问题,似乎工作如预期。
仅供参考,您应该使用正确的连接语法,这个旧的ANSI-89标准在SQL 2012中已经以某些形式停止使用。
发布于 2015-06-16 23:20:28
您的update语句不太正确。您需要将表与插入的表行连接起来。
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更多执行update join here的示例。
https://stackoverflow.com/questions/30871503
复制相似问题