2011-12-11 14 views
0

データが異なる場合にのみ、別のテーブルにデータを挿入したいとします。
したがって、このために、私は最初のテーブルの上にトリガを作成し、このように:私は、私がしようとした場合、これがないことに気づいMySQLのトリガー - データが異なる場合にのみ別のテーブルに挿入

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

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 

問題はで、それはエラーが出ていることです

SELECT 'ACBDE' 
WHERE 1 = 1 

違いがある場合にのみ、MySQLを使用して履歴テーブルに挿入する方法を教えてください。 if文で

答えて

1

するTryラッピング:

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

関連する問題