需要跟踪订单上的以下更改;
- 谁创建了订单以及何时创建
- 谁添加/更新/删除了具有数量的项目以及何时
我已经考虑到了这一点,但不确定它是否有任何好处,而且不确定命名约定
LogEventType
- ID
- 类型(即UPDATE、DELETE、ADD(
订单日志
- 日志ID
- 事件类型(FK_LogOperation_ID(
- 订单ID
- Itemnum
- 数量
- 用户名
以下是我在不深入更改现有设置和最少工作量的情况下要做的事情。我欢迎批评。
我假设当有人删除/添加项目时,订单标题和详细信息表会立即用新信息更新(类型1-就地更新(
为此,我会将ORDERLOG更改为ORDERSHISTORY。在里面,我会有当前的顺序和对它的任何更改。这将是一个附加。新订单将是一项新纪录。更新是另一个新记录等。
将ORDER_HEADER和ORDER_HOSTORY中的所有字段复制到ORDERSHISTORY。然后添加用于更改检测、当前和更改日期的列。它还有更多,但这将暂时有效。这取决于你,但你可以制作这样的列:
CHANGE_TYPE CHAR(1) -- 'A' to add, 'C' to change, 'D' to delete.
IS_CURRENT INT -- 1 is latest record, 0 is not
EFFECTIVE_DATE DATETIME -- GETEDATE() when record is inserted
当某个事件发生时,在ORDERSHISTORY中插入一条记录。遵循上面的业务规则,您将能够看到订单从初始到最终的完整历史记录。
您可以在ORDER_HEADER表上设置触发器,以便在该表以任何方式受到影响时插入记录。
值得注意的是,这会造成表蠕变,因此请确保在不再经常需要时进行存档或删除。