2014-08-28 27 views
0

我想創建一個觸發器,它將觸發重複鍵更新,但它不起作用。這個想法是,在每個重複密鑰更新上,我想複製歷史記錄表中更新行的舊內容。Mysql:重複鍵更新觸發不起作用

INSERT INTO t1 
      (
       w1, 
       w2 
      ) 
      Select 
       w1, 
       w2 
      from t2 
      on duplicate key update 
       w2 = IF(values(w2) is not null and values(w2) != "", VALUES(w2), t1.w2); 

和觸發:

drop trigger if trigger1; 
DELIMITER $$ 

CREATE 
    TRIGGER trigger1 before update ON t1 
    FOR EACH ROW 
    BEGIN 
     INSERT INTO history_table 
     (
      w1, -- this is primary key 
      w2 
     ) 
     values(
      old.w1, 
      old.w2 
     ); 


    END$$ 

DELIMITER ; 

是否有人知道如何使它工作和一般的,如果它是可能的。

我試圖讓觸發器在插入之前啓動並且不起作用。

謝謝

+1

我懷疑唯一的方法可能是'AFTER UPDATE'觸發器。運行的'BEFORE'觸發器總是'BEFORE INSERT','BEFORE'觸發器在技術上應該在服務器發現重複密鑰違規之前觸發。 – 2014-08-28 23:37:27

回答

0

如果您對history_table.w1主鍵,你做一個更新可以說,W1 = 1,W1下次更新= 1不會因爲「重複項」錯誤

的記錄
+0

歷史記錄表中沒有主鍵,根本沒有記錄任何值。 – Alex 2014-08-28 14:25:44