2012-11-10 113 views
-1

問題是創建一個只有在舊記錄與新記錄不同時才更新記錄的觸發器。我能得到一些幫助,請我甚至不知道如何從如何創建只更新記錄(如果新記錄與舊記錄不同)的觸發器?

CREATE TRIGGER update_marketingliste 
ON marketing_list FOR UPDATE 
AS 
BEGIN 

    SELECT * FROM INSERTED 
END 
+0

爲什麼只需要一個觸發器來更新值是新的?如果該值不是新的,那麼它只是用相同的值替換該值。 – Paparazzi

回答

0

除了啓動語法我不知道該架構是什麼,但下面的示例代碼應該可以幫助您瞭解如何可以做到這一點。

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

掉桌測試 轉