扑克和处理锅里的钱与SQL交易保持一致性



我想知道如何处理SQL数据库中的资金以保持一致性。我想表格看起来像下面这样。

考虑以下场景:如果两个玩家正在玩,那么他们下注的钱已从他们的两个balance_usd中扣除并添加到pot_usd中。但假设服务器在手中间出现故障。这里数据库的一致性可能意味着pot_usd中的钱应该退还给两个玩家,balance_usd有效地取消手牌。似乎仅靠交易并不能解决这个问题。扑克服务器的后端应该如何构建来处理这个问题?

table user
    user_id
    balance_usd
table game
    game_id
    pot_usd
    ...

为了应对这种可能性,您可以有一个CurrentGameStakes表,其中包含玩家ID和质押金额的字段。然后,当手牌完成后,您将总赌注转移给获胜者,如果游戏由于某种原因没有完成,您将赌注金额退还给每个玩家。

您需要在

游戏开始时跟踪balance_usd和pot_usd。如果游戏被取消,则只需恢复这些值即可。如果它运行到完成,则从用于跟踪它们的表中清除记录。

最新更新