2011-12-11 26 views
0

僅當數據不同時,纔想將數據插入另一個表中。
所以爲了這個,我創建了第一個表的觸發器,像這樣:MySQL觸發器 - 僅當數據不同時才插入另一個表中

CREATE TRIGGER `RegistrationHistory` AFTER UPDATE ON `registration` 
FOR EACH ROW 
INSERT INTO registration_history (`Key`, `Name`, `Version`, `LastUpdate`) 
SELECT OLD.Key, OLD.Name, OLD.Version, NOW() 
WHERE OLD.Key != NEW.Key 
AND OLD.Name != NEW.Name 
AND OLD.Version != NEW.Version 

的問題是,它的錯誤了與:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE OLD.Key != NEW.Key

我注意到,如果我嘗試這不工作要麼:

SELECT 'ACBDE' 
WHERE 1 = 1 

那麼我應該如何插入歷史表使用MySQL只有當有差異?在if語句

回答

1

嘗試包裝:

CREATE TRIGGER `RegistrationHistory` AFTER UPDATE ON `registration` 
FOR EACH ROW BEGIN 
    IF (NEW.Key != OLD.Key AND NEW.Name != OLD.Name AND NEW.Version != OLD.Version) Then 
    INSERT INTO registration_history (`Key`, `Name`, `Version`, `LastUpdate`) 
     VALUES(NEW.Key, NEW.Name, NEW.Version, NOW()); 
    END IF; 
END 
+0

的想法是很好的,但不幸的是沒有工作。我有錯誤:#1064 - 你的SQL語法有錯誤;請檢查與您的MySQL服務器版本對應的手冊,以獲得在第5行附近使用的正確語法 – CristiC

+0

嘗試添加分隔符 - DELIMITER $$ CREATE TRIGGER ... BEGIN ... END $$ DELIMITER; – Devart

+0

謝謝,這工作。 – CristiC

相關問題