1

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

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

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

是否可以仅使用 mysql 来实现?

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

4

2 回答 2

4

是的,您可以使用BEFORE UPDATE触发器(文档)。

我认为这种语法是正确的,但有一段时间没有使用 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 ;
于 2013-08-06T16:08:10.117 回答
1

在更新规则上使用触发器。将 price 的值设置为 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 
于 2013-08-06T16:00:03.787 回答