MySQL Trigger--未插入正确的值

时间:2011-06-16 20:03:15

标签: mysql triggers

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

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插入到我的历史记录表中。

此查询有什么问题?

2 个答案:

答案 0 :(得分:2)

modelNumber和OLD.salePrice可能不应该是单引号。

答案 1 :(得分:1)

尝试将其更改为

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