我想知道如何在SQL数据库中处理钱以保持一致性。我认为表格看起来像下面的那样。
考虑以下情况:如果两个玩家正在玩,那么他们下注的钱已从他们balance_usd
中扣除并添加到pot_usd
。但是假设服务器在中间瘫痪。这里数据库的一致性可能意味着pot_usd
中的钱应该返回给两个玩家balance_usd
,有效地取消了手。似乎单独交易不能解决这个问题。如何构建扑克服务器的后端来处理这个问题?
table user
user_id
balance_usd
table game
game_id
pot_usd
...
答案 0 :(得分:0)
为了应对这种可能性,你可以有一张CurrentGameStakes
表,其中包含玩家ID和赌注金额的字段。然后当手完成时,你将总赌注转移给胜利者,如果游戏由于某种原因没有完成,你将赌注金额返还给每个玩家。
答案 1 :(得分:0)
您需要在游戏开始时跟踪balance_usd和pot_usd。如果游戏被取消,则只需恢复这些值。如果它运行完成,则清除用于跟踪它们的表中的记录。