【发布时间】:2016-11-29 11:18:53
【问题描述】:
我有一个包含以下列的表格:
ID | CLIENT_SYNCED_TIME | NAME | DESCRIPTION | LM_TIME
当任何其他列值更新时,触发器将自动设置LM_TIME 列。
但是我希望LM_TIME .... NOT 在CLIENT_SYNCED_TIME 列更新时由触发器更新。
我现在正在使用下面的触发器,它会在任何列值发生更改时更新LM_TIME。
我只是想让触发器不用担心CLIENT_SYNCED_TIME 列。我必须进行哪些修改才能达到这种效果?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[updateLM_TIME]
ON [dbo].[INSTITUTIONS]
AFTER INSERT, UPDATE
AS
UPDATE dbo.INSTITUTIONS
SET lm_time = CONVERT(DATETIME, CONVERT(VARCHAR(20), GETDATE(), 120))
WHERE ID IN (SELECT DISTINCT ID FROM Inserted)
GO
【问题讨论】:
-
如果有一个
UPDATE语句并且它更新了CLINET_SYNCED_TIME(和其他列)但碰巧将它设置为它已经拥有的相同值,那么应该发生什么? -
这不是问题先生..我只是想让触发器不用担心“CLIENT_SYNCED_TIME”列
标签: sql sql-server triggers