如何创建在 table 的字段更新时自动更新日期时间列的触发器
How to create a trigger that automatically update a datetime column when a field of the table is updated
我正在尝试创建一个列来衡量一行的 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
Msg 8154, Level 16, State 1, Procedure ModDate_location_update, Line 6 [Batch Start Line 119]
The table 'dbo.dim_Location' is ambiguous.
只需更新具有出现在 INSERTED 虚拟 table 中的 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
我正在尝试创建一个列来衡量一行的 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
Msg 8154, Level 16, State 1, Procedure ModDate_location_update, Line 6 [Batch Start Line 119] The table 'dbo.dim_Location' is ambiguous.
只需更新具有出现在 INSERTED 虚拟 table 中的 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