【发布时间】:2019-09-03 15:11:12
【问题描述】:
我正在尝试创建一个测量行的 UPDATE_DATE 的列。 我正在构建一个触发器,但我有一个关于密钥的模棱两可的问题。
CREATE TRIGGER ModDate_location_update
ON dim_Location
AFTER UPDATE
AS
BEGIN
UPDATE dbo.dim_Location
SET UPDATE_DATE = GETDATE()
--WHERE INSERT_DATE IN (SELECT INSERT_DATE FROM INSERTED)
FROM dim_Location X
JOIN dim_Location Y ON X.NEW_LOCATION_KEY = Y.NEW_LOCATION_KEY
end
消息 8154,级别 16,状态 1,过程 ModDate_location_update,第 6 行 [批处理开始第 119 行] 表“dbo.dim_Location”不明确。
【问题讨论】:
-
这里可能存在更大的问题,即您的触发器似乎是递归的,因为
dim_Location上的更新会触发再次更新同一个表的触发器。这是预期的逻辑吗? -
在您的
UPDATE子句中使用别名,但是,您为什么不在这里引用inserted?这将在您每次更新单行时更新 整个 表;这肯定是不想要的。看起来你真的想要一个INSTEAD OF触发器,真的。
标签: sql-server ssms-2017