MySQL数据库中的历史字段

时间:2013-08-06 15:55:40

标签: mysql mysql-5.0

尝试在表中创建一个字段,该字段将获取另一个字段的旧值。我的表与此非常相似:

 ------------ -------------------- ------------------------ 
| id int(10) | price decimal(5,2) | price_old decimal(5,2) | 
 ----------------------------------------------------------

我想要获得的是price字段的值,以便在当前记录的price_old字段ON UPDATE中复制。

  

是否可以仅使用mysql实现此目的?

PS:该单元格中包含的数据并不重要。用法是存储项目的先前价格以及之后能够显示其变化的方式。我只需要最后一个值,而不是表条目的完整历史记录。 (我的MySQL服务器是5.0,如果这很重要)

2 个答案:

答案 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