DB中处理恢复金融交易的一般策略



我正在用NextJS+Prisma ORM+PostgreSQL构建一个家庭预算应用程序。

我不确定我目前如何处理删除/恢复过去事务的策略在扩展/db性能方面是否有意义。。

因此,应用程序的功能是这样的:

  1. 用户添加分配给所选银行帐户的交易。数据库中的每一个事务行都包括像amountbalanceBeforebalanceAfter这样的字段
  2. 交易成功后,将更新银行账户的活期余额

现在,假设插入了多个事务,并且用户意识到他在某个地方犯了错误。然后,他需要选择事务并删除/更新它,这将在更新该事务之后的每一行以更新balanceAfterbalanceBefore字段之后进行,以便事务历史记录是正确的。

有没有更好的方法来处理这种情况?必须更新过去几千条记录的行可能会占用大量资源。

您不仅不应该删除或更新财务交易,而且输入数据也不应该包含余额(之前或之后(。您生成了两个新的交易,而不是更新或删除交易:一个是反转不正确的交易(从而恢复余额(,另一个是插入正确值
对于余额,不存储它们,只存储交易金额。然后创建一个view,在需要时实时计算余额。通过创建视图,在事务上执行DML时,您不需要执行任何计算。请参阅下面的示例以了解以上两种情况。

最新更新