我的数据库中有三个表BILL,RECHARGE AND SENT
。BILL
表有一个名为UNITBALS
的列,RECHARGE
表有一个名为UNITS
的列SENT
表中还有一个名为VOLUME
的列。通常应该发生的情况是,当客户为其帐户充值时,他的新UNITS
将与他的旧UNITS
相加RECHARGE
表格和VOLUME
表格中已发送邮件总数SENT
的总和将从UNITS
表RECHARGE
的总和中减去结果将用于更新UNITBALS
表上的BILL
。但问题是,当客户为其帐户充值时,BILL表上的UNITBALS
会使用新余额更新或有时UNITBALS
的更新值会高于应有的值。现在我的数据库存在一种不一致的情况,客户也在抱怨。
答案 0 :(得分:1)
因此,根据我收集的内容,您将在BILL.UNITBALS上存储汇总计算的结果
特别是
BILL.UNITBALS = SUM(RECHARGE.UNITS) - SUM(SENT.VOLUME)
除非您犯了严重错误,否则可能发生的事情是由于待处理的交易而导致transaction isolation level错过了您应该考虑的值。
由于这个问题,我尽力避免在DB中存储计算结果
通常这意味着每次检索数据时都会进行计算。这可能(或可能不是)性能问题,但至少您有更多机会获得正确的信息。
如果行程罚款过高,我建议您每24小时只进行一次重新调整,并添加免责声明,例如“付款不会在X个工作日内显示在您的帐户中”