我的数据库有一个名为 Warehouse 的表,它有 Warehouse_idWarehouse 和 Warehouse_name 作为主键。我想要做的是有效地存储最多 N 最近对存储在表中的每个仓库所做的更改。我考虑过创建一个“帮助”表(例如,warehouse_changes)并通过我的应用程序处理更新,但老实说,感觉有一种更聪明的方法来解决这个问题。
有没有办法在每个仓库存储特定数量的条目并通过 mysql 工作台自动管理更新正确的元素?在此先感谢并记住,我在这个领域并不是特别先进。
我的数据库有一个名为 Warehouse 的表,它有 Warehouse_idWarehouse 和 Warehouse_name 作为主键。我想要做的是有效地存储最多 N 最近对存储在表中的每个仓库所做的更改。我考虑过创建一个“帮助”表(例如,warehouse_changes)并通过我的应用程序处理更新,但老实说,感觉有一种更聪明的方法来解决这个问题。
有没有办法在每个仓库存储特定数量的条目并通过 mysql 工作台自动管理更新正确的元素?在此先感谢并记住,我在这个领域并不是特别先进。
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;