-1
問題是創建一個只有在舊記錄與新記錄不同時才更新記錄的觸發器。我能得到一些幫助,請我甚至不知道如何從如何創建只更新記錄(如果新記錄與舊記錄不同)的觸發器?
CREATE TRIGGER update_marketingliste
ON marketing_list FOR UPDATE
AS
BEGIN
SELECT * FROM INSERTED
END
問題是創建一個只有在舊記錄與新記錄不同時才更新記錄的觸發器。我能得到一些幫助,請我甚至不知道如何從如何創建只更新記錄(如果新記錄與舊記錄不同)的觸發器?
CREATE TRIGGER update_marketingliste
ON marketing_list FOR UPDATE
AS
BEGIN
SELECT * FROM INSERTED
END
除了啓動語法我不知道該架構是什麼,但下面的示例代碼應該可以幫助您瞭解如何可以做到這一點。
SET NOCOUNT ON GO
CREATE TABLE測試(COL1 INT主鍵,COL2 INT) 去
CREATE TRIGGER trg_test_upd上測試 INSTEAD UPDATE 作爲 BEGIN
IF EXISTS (
SELECT *
FROM Deleted del -- old value
INNER JOIN Inserted ins -- new value
on del.col1 = ins.col1
and del.col2 = ins.col2)
BEGIN
PRINT 'No Update'
RETURN --if old value is same as new value dont update
END
ELSE
BEGIN
UPDATE t1
set col2 = i.col2
from dbo.test t1
inner join inserted i
on t1.col1 = i.col1
END
END go
插入到測試(COL1,COL2) 選擇10,10 去
更新測試 集COL2 = 200 其中COL1 = 10
SELECT * FROM TEST
--This將不做更新 更新測試 集COL2 = 200
GO
掉桌測試 轉
爲什麼只需要一個觸發器來更新值是新的?如果該值不是新的,那麼它只是用相同的值替換該值。 – Paparazzi