我想仅在数据不同时才在另一个表中插入数据 所以为此,我在第一个表上创建了一个触发器,如下所示:
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插入历史表?
答案 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