我開始一個項目,我需要確保大量用戶可以獲取多次促銷的促銷代碼。SQL Server獲取唯一記錄
這些代碼具有附加的貨幣價值,所以至關重要的是隻有一個代碼發送給每個用戶,並且沒有兩個用戶可以收到代碼。
我到目前爲止的計劃是在SQL Server中創建一個名爲code_pool
的表格,並且每次都進行大量的代碼插入操作。
SQL Server 2005的表是這樣的......
[id](int pk), [promo_code] varchar(150), [promotion_id](int fk)
然後,用戶將使用retreive存儲的過程,將得到的第一條記錄從表中晉升,然後刪除每個代碼(或更新)作爲過程的結果返回代碼之前的記錄。
我的問題是如何確保記錄被正確鎖定,以便只有一個用戶可以獲取每條記錄,並且沒有兩個用戶同時訪問proc會收到相同的代碼?
我是否需要鎖定表格/記錄,如果是這樣的話,如何在繁忙的生產環境中堆疊?