gpt4 book ai didi

php - laravel 5.4 : pessimistic locking. 在事务完成之前避免选择一行

转载 作者:行者123 更新时间:2023-11-29 03:22:15 26 4
gpt4 key购买 nike

我将金融交易存储在数据库中。出于效率原因,我在交易行中保存了金额和账户余额。例如:

编号 | TRANSACTION_AMOUNT | 交易金额ACCOUNT_BALANCE

新行中的 ACCOUNT_BALANCE 计算为最后一个 ACCOUNT_BALANCE + 新的 TRANSACTION_AMOUNT。

要继续执行此操作,我需要先执行 SELECT,然后执行 INSERT。问题是两笔交易是否几乎同时发生。它们都将读取相同的最后一个 ACCOUNT_BALANCE 并且在插入后 ACCOUNT_BALANCE 不一致。

我已经看到函数 lockForUpdate() 但我不完全确定如何在这种情况下使用它,或者即使适用。

解决这个问题的最佳方法是什么?

最佳答案

我认为最好的方法是使用数据库事务。例如

开始工作;
从交易中选择账户余额;
-- 增加账户余额然后提交
UPDATE account_balance SET account_balance = new_balance;
提交;

关于php - laravel 5.4 : pessimistic locking. 在事务完成之前避免选择一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com