MySQL触发器 - 不插入正确值

问题描述:

如果每行更新的数据不等于每行当前数据,则此触发器的目标是将每行旧数据插入表中。MySQL触发器 - 不插入正确值

delimiter // 
CREATE TRIGGER history BEFORE UPDATE ON table1 

FOR EACH ROW 
BEGIN 
IF NEW.salePrice <> OLD.salePrice THEN 

INSERT INTO history_price (modelNumber,salePrice) 
     VALUES ('modelNumber','OLD.salePrice'); 

     ELSEIF NEW.salePrice = OLD.salePrice THEN 
      SET NEW.salePrice = OLD.salePrice; 

    END IF; 

END;// 
delimiter ; 

总之,这个概念应该工作,但插入不工作。它只是插入实际文本,而不是值。

更具体地说:

INSERT INTO history_price (modelNumber,salePrice) 
    VALUES 
     ('modelNumber','OLD.salePrice'); 

我触发这部分按字面插入modelNumber,并OLD.salePrice到我的历史表,如果更新的值不相等。

这个查询有什么问题?

+0

不要你只想删除引号轮2场?或者我是不是很厚? – BugFinder 2011-06-16 20:05:44

+0

我想插入值。我正在做这些特定领域的更新,我想插入旧字段的行内容。 – 2011-06-16 20:06:45

+0

我知道,但是通过在字段名称周围放置单引号,您可以像插入到history_price(modelNumber,salePrice)值(“joe”,“blogs”)中那样好插入 – BugFinder 2011-06-16 20:08:14

modelNumber和OLD.salePrice可能不应该用单引号引起来。

+0

这工作。现在,它执行了INSERT OLD.salePrice,但没有插入modelNumber – 2011-06-16 20:10:13

+0

现在modelNumber会发生什么情况? – MGZero 2011-06-16 20:15:08

+0

我只是不得不改变它OLD.modelNumber – 2011-06-16 20:16:01

尝试过,将其更改为

insert into history_price (old.ModelNumber,old.salePrice)