0
我试图用时间戳更新字段LastUpdate
,只要其他两个字段中的任何一个被更改为与原始值不同的值。这两列是LoadDate
和CompleteDate
。触发器我有工作,但由于我每次运行我的进程时都更新行,无论日期是否更改,它都会更新时间戳。我需要比较以查看旧的LoadDate
与新的LoadDate
是不同的,还是旧的CompleteDate
与新的CompleteDate
不同。这是我的触发器:触发更新时间戳如果新的字段值!=旧的字段值
CREATE TRIGGER time_stamp
ON my_table
FOR UPDATE, INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @LoadDate datetime, @CompleteDate datetime
SELECT @LoadDate = LoadDate, @CompleteDate = CompleteDate FROM my_table
UPDATE my_table
SET LastUpdate = GETDATE()
WHERE LoadDate = @LoadDate
AND CompleteDate = @CompleteDate
END
'inserted'和'deleted'是表,以便它们可以表示设置操作的结果。假设它们总是包含一行,设计一个触发器通常是一个糟糕的计划。您可以使用比较_before_和_after_值并更新正确的行。 [This](http://www.mssqltips.com/sqlservertip/2342/understanding-sql-server-inserted-and-deleted-tables-for-dml-triggers/)提供了一个介绍。 – HABO