2012-11-14 20 views
2

我想知道如何處理SQL數據庫中的錢以保持一致性。我認爲這些表格看起來像下面這樣。撲克和處理與SQL交易一致性的錢一致性

請考慮以下場景:如果兩個玩家在玩,那麼他們下注的錢已從他們的balance_usd中扣除,並被添加到pot_usd。但是,假設服務器處於中間位置。這裏數據庫的一致性可能意味着pot_usd中的錢應該返還給兩位玩家balance_usd有效取消手牌。似乎只有交易才能解決這個問題。應該如何構建撲克服務器的後端來處理這個問題?

table user 
    user_id 
    balance_usd 

table game 
    game_id 
    pot_usd 
    ... 

回答

0

爲了應付與不測,你可以有一個CurrentGameStakes表的playerID和賭額的字段。然後當手牌完成時,您將所有賭注轉移給贏家,如果遊戲因某種原因未完成,您將賭注金額返還給每位玩家。

+0

這是否意味着恢復一個特殊的SQL腳本需要手動運行來查找孤兒遊戲並返回放樣量。也就是說,沒有避免擁有特殊的恢復代碼。 – user782220

+0

你有多少次期待遊戲未完成?相當少見,人們會希望。您可以安排腳本在服務器啓動時運行? – podiluska

0

您需要在遊戲開始時跟蹤balance_usd和pot_usd。如果遊戲取消,只需恢復這些值。如果它運行完成,則清除您用來追蹤它們的表中的記錄。

+0

如果玩家在多個桌子上玩多手牌,這將不起作用。如果手下跌,那麼會有多個「起始餘額」可供選擇。 – njr101

+0

我同意,但這不是問題中提到的功能。 – DaveRlz