【问题标题】:How to put a lock on a database table resource如何锁定数据库表资源
【发布时间】:2019-10-24 15:53:05
【问题描述】:

我正在构建一个金融网络应用程序,类似于电子银行应用程序。每当进行交易时,例如资金转账,都会扣除一笔交易费用,并通过查询当前余额并将扣除的费用相加,最后更新余额字段来更新系统账户的收益/余额。

现在我的问题是,当多笔交易可能有 200 笔交易同时由不同账户的不同用户执行时,我预期的总收入余额与系统中实际注册的收入之间存在差异。我相信这与服务器请求的异步性质有关,我该如何防止这种情况??

【问题讨论】:

  • 我相信SELECT ... FOR UPDATE 就是您要找的。​​span>
  • 是的,我相信这会做到。现在试试

标签: php mysql codeigniter


【解决方案1】:

codeigniter 中有交易。可以参考Codeigniter Transaction

你可以用作

$this->db->trans_start();

您的查询/查询

$this->db->trans_complete();

【讨论】:

  • 我实际上正在使用 codeigniter 事务,但这种情况正在发生。而且我认为使用事务的目的是确保与数据库操作相关的进程全部执行,或者如果一个步骤失败则回滚。为了更好地澄清我的问题,如果我要使用 java,我当然会在多个线程中执行每个事务,但会同步更新主帐户余额的一个函数。
  • 是的,因为 CI 在trans_strict(严格模式)中运行所有查询,如果您愿意,也可以将其设为 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多