尝试在表中创建一个字段,该字段将获取另一个字段的旧值。我的表与此非常相似:
------------ -------------------- ------------------------
| id int(10) | price decimal(5,2) | price_old decimal(5,2) |
----------------------------------------------------------
我想要获得的是price
字段的值,以便在当前记录的price_old
字段ON UPDATE
中复制。
是否可以仅使用mysql实现此目的?
PS:该单元格中包含的数据并不重要。用法是存储项目的先前价格以及之后能够显示其变化的方式。我只需要最后一个值,而不是表条目的完整历史记录。 (我的MySQL服务器是5.0,如果这很重要)
答案 0 :(得分:4)
是的,您可以使用BEFORE UPDATE
触发器(documentation)。
我认为这种语法是正确的,但是有一段时间没有使用MySQL,所以你可能不得不玩它。如果它错了并且你让它工作,请告诉我,以便我可以编辑它。
DELIMITER $$
CREATE TRIGGER `price_trigger`
BEFORE UPDATE ON `products`
FOR EACH ROW
BEGIN
IF NEW.price != OLD.price
SET price_old = OLD.price;
END IF;
END$$
DELIMITER ;
答案 1 :(得分:1)
在更新规则上使用triggers。将价格设定为price_old
CREATE TRIGGER `update_price_old`
BEFORE UPDATE ON `table_name` FOR EACH ROW
BEGIN
UPDATE `table_name` SET price_old = OLD.price where OLD.id = id;
END