【发布时间】:2015-09-01 12:04:33
【问题描述】:
我正在尝试使用表触发器更新 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
【问题讨论】:
-
您使用的是哪个版本的 MS SQL?
-
Microsoft SQL Server 2012 - 11.0.5556.0 (X64) 2014 年 10 月 31 日 16:50:24 版权所有 (c) Windows NT 6.3
(Build 9600) 上的 Microsoft Corporation 标准版(64 位) :)(管理程序) -
为什么不在 SQL 中设置一个默认值?即使他们为 ParentEmployeeKey 提供值,您也想要一个覆盖触发器?
-
因为不仅必须更改刚刚插入的行,而且必须更新具有该特定 EmployeeId 的所有行。
-
您能在员工表中发布一个数据样本吗?
标签: sql tsql triggers sql-insert