扑克和使用SQL事务处理资金以保持一致性

时间:2012-11-14 09:01:05

标签: sql transactions poker

我想知道如何在SQL数据库中处理钱以保持一致性。我认为表格看起来像下面的那样。

考虑以下情况:如果两个玩家正在玩,那么他们下注的钱已从他们balance_usd中扣除并添加到pot_usd。但是假设服务器在中间瘫痪。这里数据库的一致性可能意味着pot_usd中的钱应该返回给两个玩家balance_usd,有效地取消了手。似乎单独交易不能解决这个问题。如何构建扑克服务器的后端来处理这个问题?

table user
    user_id
    balance_usd

table game
    game_id
    pot_usd
    ...

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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