存储mysql表的最新更改的最有效方法是什么

时间:2013-11-04 12:43:07

标签: mysql sql mysql-workbench

我的数据库有一个名为Warehouse的表,它有Warehouse_idWarehouse和Warehouse_name作为主键。我想要做的是有效地存储对表中存储的每个仓库进行的最近N次更改。我考虑过创建一个“帮助”表(例如仓库更改)并通过我的应用程序处理更新,但老实说,感觉就像有一个更聪明的方法。

有没有办法在每个仓库中存储特定数量的条目,并通过mysql工作台自动管理更新正确的元素?提前谢谢,请记住,我在这个领域并不是特别先进。

1 个答案:

答案 0 :(得分:1)

a very detailed article on O'Reilly Answers描述了如何使用触发器完成您想要的操作。

当用两个词解释时,您需要为每个要存储的操作类型创建一个帮助程序表和一个触发器。例如,根据该文章,以下是更新触发器的显示方式:

-- Creating a trigger that will run after each update
-- for each affected row
CREATE TRIGGER au_warehouse AFTER UPDATE ON Warehouse FOR EACH ROW

BEGIN

  -- Insert new values into a log table, or you can insert old values
  -- using the OLD row reference
  INSERT INTO warehouse_log (action, id, ts, name)
      VALUES('update', NEW.id, NOW(), NEW.name);

END;

之后,您可以使用简单的SQL查询获取最新的1000个更改:

SELECT * FROM warehouse_log ORDER BY ts DESC LIMIT 1000;