如何使用php在数据库中存储订单历史记录?

时间:2012-02-19 21:56:45

标签: php mysql history

我有一个用户可以下订单的网站。订单在准备交付之前经历了各个阶段。我希望能够随时记录与订单有关的任何事情。

以下是我希望它看起来的一个例子:

  

(2/13/12 4:41 pm):客户发起的订单(2/13/12 4:41 pm):订单   发送给经理批准(2/13/12 4:43 pm):订单批准   经理
(2/14/12 6:03 pm):订单由用户编辑:
城市:'洛杉矶   洛杉矶'到'圣地亚哥'
(2/14/12 6:09 pm):该订单由   admin:
电子邮件:'gearge@gmail.com'到'george@gmail.com'
(2/15/12   晚上8:41):订单准备交货

我存储此类订单历史记录的最佳方法是什么?我在DB中创建了一个名为history的表,我希望存储与每个订单相关的历史记录。我的列是history_id(主要),order_id(外国),添加日期(时间戳)和history_message(varchar)。

理想情况下,我想为订购流程中的每个步骤创建编号代码,例如订单批准,订单编辑或订单交付,然后只分配该行的编号而不是实际的历史消息,这是更多字符。我觉得这样我不会夸大我的DB。这种方法的问题在于我想保留已更改的实际数据的日志(正如您在示例中的用户和管理员的编辑中看到的那样)并且我不确定如何在没有更改的情况下实现保存每行的完整历史消息。

根据我的情况,在数据库中存储订单历史记录的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用触发器更新子表,跟踪每个订单状态。

基本上使用插入触发器或通过插入查询在订单状态更新后手动插入,您可以将所需数据从订单表复制到我们可以调用trackorders的新表。跟踪表将跟踪所有更改,并将当前状态记录在主表中。