此触发器的目标是,如果每行的更新数据不等于每行的当前数据,则将每行旧数据插入表中。
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)
modelNumber和OLD.salePrice可能不应该是单引号。
答案 1 :(得分:1)
尝试将其更改为
insert into history_price (old.ModelNumber,old.salePrice)