2014-01-23 66 views
0

好日子所有,訪問幾乎在同一時間同一數據超過1級的客戶

我在C#.NET 4.0框架的工作,和數據庫爲Microsoft SQL Server 2008 R2。

有一個系統讓用戶做禮物贖回。當用戶點擊「兌換」按鈕,系統會:在禮品清單

  1. 首先檢查之前更新customer_gift表,
  2. 和更新gift_inventory表爲特定的禮物。

如果庫存小於0,它會提示錯誤信息告訴用戶禮品已經完成,然後取消兌換過程。

中有以下條件的問題發生:

禮物只有在庫存1個數量現在。

客戶傑克點擊「兌換」按鈕2013-11-11 09:22:27.780。 Customer Jess點擊「兌換」按鈕2013-11-11 09:22:27.497

他們點擊「兌換」按鈕的時間不同只有0.0283秒。

因此,也許不同的時間太短,他們都被成功兌換禮品,因爲該系統(第一客戶)更新gift_inventory表,系統(第二個客戶)已獲得來自庫存數據(禮品之前A),因此,系統仍然讓第二個客戶繼續,因爲庫存仍然等於1.

我想出了一種方法來解決這個問題,其描述如下: 創建一個新的列gift_inventory表,名稱lock,數據類型爲Boolean。當客戶點擊兌換按鈕,並在系統檢查禮品庫存之前,將布爾值設置爲true。因此,如果第二個客戶嘗試訪問禮品庫存,並發現該系統會等待1秒鐘,然後再次嘗試訪問,直到lock = false,然後才訪問並獲取庫存數據。

但是,我認爲這是一個很好的解決方案。我認爲這可能會導致數據庫變慢。

任何想法和建議?

+1

一句話: 「交易」 - 谷歌它。 – Joe

回答