我们的团队需要跟踪基本上是内部创建的ERP系统的库存。我们需要经常访问系统中给定仓库中给定物料的库存量,并能够跟踪库存变化的原因以及何时更改。
最初的想法是只有调整表并在每次查看时计算当前库存。通过我们的测试,很明显,考虑到我们每天要做多少次,这个计算成本太高。
我们的新想法是有一个包含历史记录的调整表,但也保留一张表格,列出当前库存。进行调整后,我们的程序将同时更新调整表和当前库存表。我真的不喜欢这个解决方案,因为它需要2次更新才能进行一次更改。怎么会失败怎么办?当调整没有反映库存表中的内容时,您如何协调?
有没有人有更好的方法?
答案 0 :(得分:2)
如果您无法在单个事务中执行所有必要的更新,则需要一个管理过程(而不是声明性约束)以确保数据正确。例如,您可以运行一个cron作业,根据详细信息测试总计。这样做的频率取决于cron作业运行的时间,以及应用程序可以容忍的cron作业的持续时间。
我更喜欢详细信息表上的触发器加上定期的cron作业。让触发器调整每笔交易的总额。 cron作业确保没有错过任何更新。 (大多数dbms会让你禁用维护触发器;当你不可避免地忘记再次启用它们时,cron作业会提醒你。)