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