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

标签 mysql sql mysql-workbench

我的数据库有一个名为 Warehouse 的表,它以 Warehouse_idWarehouse 和 Warehouse_name 作为主键。我想要做的是有效地存储最多 N 个最近对存储在表中的每个仓库所做的更改。我考虑过创建一个“助手”表(例如 warehouse_changes)并通过我的应用程序处理更新,但老实说,我觉得有更聪明的方法来解决这个问题。

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

最佳答案

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;

关于mysql - 存储 mysql 表最近更改的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19767942/

相关文章:

python - 使用 python 将值导入 MySQL 数据库时出现 SQL 语法错误

MySQL 错误代码 : 1264. 第 1 行 'columnname' 超出范围值

mysql - 有索引的查询比没有索引慢

mysql - 无法在 MySql Workbench 中连接 Google Cloud SQL

java - "hibernate.hbm2ddl.auto"属性/创建&更新

php - Mysql 乘法错误

php - 线程评论的可扩展解决方案

php - 是什么导致我的 SQL 事务在 php 没有注意到的情况下中止?

php - 任何易于使用的 php mysql datagrid?

mysql - 使用 JOIN 优化 MySQL 计数查询