2015-04-03 93 views
0

我正在尋找一種解決方案,以下情況:Mysql註冊與交易

我有一個錦標賽表中有最大的註冊量。 當註冊發生時,它將在tournament_players表中插入該行。

我的主要問題是我不知道如何避免同時發生兩次或多次註冊並且超過最大註冊量的情況。 我正在研究有關交易,但我並不真正瞭解它在實踐中的工作原理。我可以只鎖定行還是整個表? AFAIK我知道首先需要InnoDB第二需要MyIsam。哪個對我的問題最好?

+0

我的問題只是在理論上。我想知道現在有什麼解決方案,當我在錦標賽桌上有一個計數器時,我嘗試在玩家註冊時增加。 'UPDATE t SET count = count + 1 WHERE max> count AND id = tournament_id' 如果我有一個受影響的行,我保存註冊,否則不要。 你怎麼想的? – Akos 2015-04-03 21:17:20

+0

你應該把你的評論的代碼放回問題中(編輯問題) – cmbarbu 2015-04-04 00:43:16

+0

@akos,你有蜜蜂能夠測試這個嗎? – BK435 2015-04-07 17:30:37

回答

0
  1. 可能的解決辦法:How can I set a maximum number of rows in MySQL table?
  2. 有檢查表中的行的數量,如果超過你想要什麼功能,不要運行查詢並生成錯誤代碼來代替。
+0

抱歉,您可能會誤解我。設置最大行數不符合我的需要。我需要檢查用戶是否可以在不超過最大註冊量的情況下注冊參加錦標賽,並且我擔心兩個同步請求註冊的情況彼此擊敗並超過它。 – Akos 2015-04-03 21:16:10