MySQL触发器 - 仅在数据不同时插入另一个表中

时间:2011-12-11 08:22:42

标签: mysql triggers

我想仅在数据不同时才在另一个表中插入数据 所以为此,我在第一个表上创建了一个触发器,如下所示:

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

问题是它出错了:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'WHERE OLD.Key!= NEW.Key

我注意到如果我尝试这个也不起作用:

SELECT 'ACBDE'
WHERE 1 = 1

那么只有在存在差异时,我应该如何使用MySQL插入历史表?

1 个答案:

答案 0 :(得分:1)

尝试用if语句包装:

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