问题描述
|
我的数据库中有三个表
BILL,RECHARGE AND SENT
.BILL
表有一个名为UNITBALS
的列,RECHARGE
表有一个名为UNITS
的列,SENT
表也有一个名为VOLUME
的列。通常应该发生的是,当客户为他的账户充值时,新的UNITS
将与他的旧UNITS
在RECHARGE
桌上的总和相加,并且从RECHARGE
桌上的UNITS
的总和中减去SENT
桌上的已发送消息的VOLUME
的总和,并将结果用于更新UNITBALS
但是现在的问题是,当客户向他们的账户充值时,BILL表上的UNITBALS
会被更新为新余额,或者有时the2ѭ会被更新为比应有的值更高的值。现在在我的数据库中,客户在抱怨。
解决方法
因此,根据我的收集,您正在将汇总计算的结果存储在BILL.UNITBALS上
特别
BILL.UNITBALS = SUM(RECHARGE.UNITS) - SUM(SENT.VOLUME)
除非您犯了一个严重的错误,否则可能是由于挂起的事务和事务隔离级别导致您缺少应考虑的值。
由于这个问题,我尽力避免将计算结果存储在数据库中
通常,这意味着我每次检索数据时都要进行计算。这可能是(也可能不是)性能问题,但至少您有更多机会获得正确的信息。
如果性能罚款过高,那么我建议您每24小时只进行一次对帐,并添加免责声明,例如“您的帐户将在X个工作日内不会显示付款”