我正在开发一个简单的应用来跟踪用户和公司的帐户余额。我有一个特定的利基用于此(无需深入了解其中的细节)。但是,当我开始考虑不同的方法来确保帐户始终正确且最新时,我有一些选择,我想知道最佳做法是什么。
首先,我们假设我们有一个表来跟踪所有交易(包括信用和借方)。
什么是更好的选择?
我要放弃的其他任何东西,或者可能需要的主要考虑因素?
感谢您的帮助。对于它的价值,我使用的是PHP / MYSQL,但它与这个问题/回复无关。
答案 0 :(得分:0)
除了借记或贷记金额外,您可以保留一个交易表,其中包含递增的recID和当前余额。这样你就可以做到这一点:
create table myTranstable ( recID IDType, customerID integer, acctBalance long, transactionAmount long)
begin a transaction
lock customerID
select max(recID),balance from myTransTable where customerID=thisCustomer
if(recID==NULL)
createAZeroBalanceRecordFor(thisCustomer)
else
if( balance + thisTransactionAmount <0 )
doSomethingAwfulTo(thisCustomer);
else
insert into myTransTable values ( $newMaxId,customerID,balance+thisTransactionAmount,thisTransactionAmount )
unlock CustomerID
end the transaction
这样您就不必扫描整个表格或执行cron作业等。抱歉,对于伪代码,我不了解PHP或您可以使用的数据库。