Sql server 如何创建在更新表的字段时自动更新datetime列的触发器
我正在尝试创建一个列来度量行的更新日期。 我正在建立一个触发器,但我有一个关于钥匙的模糊问题Sql server 如何创建在更新表的字段时自动更新datetime列的触发器,sql-server,ssms-2017,Sql Server,Ssms 2017,我正在尝试创建一个列来度量行的更新日期。 我正在建立一个触发器,但我有一个关于钥匙的模糊问题 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 INSER
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
Msg 8154,16级,状态1,程序修改日期位置更新,第6行[批次起始行119]
表“dbo.dim_Location”不明确
只需更新在插入的虚拟表中出现PK的所有行。例如:
CREATE TRIGGER ModDate_location_update
ON dim_Location
AFTER UPDATE
AS
BEGIN
UPDATE dbo.dim_Location
SET UPDATE_DATE = GETDATE()
WHERE LOCATION_ID IN (SELECT LOCATION_ID FROM INSERTED)
end
这里有一个潜在的更大的问题,那就是您的触发器似乎是递归的,因为
dim_Location
上的更新会触发一个触发器,该触发器会再次更新同一个表。这是预期的逻辑吗?在UPDATE
子句中使用别名,但是,为什么不在此处引用inserted
?这将在每次更新一行时更新整个表;这当然不是我们想要的。看起来你想要一个而不是触发器,真的。