2016-05-31 65 views
0

我有一個功能請求如何生成唯一代碼爲衆多用戶

  1. 代碼的網站是一個獨特的列
  2. 我的用戶將產生超過100碼一個請求
  3. 用戶將在生成代碼同一時間 。
  4. 代碼需要隨機數

我可以通過一個生成代碼之一,但它的效率不高。問題是很多用戶會同時使用,我可以'生成批量插入,代碼可能會衝突。

這是一個糟糕的設計嗎?

順便說一下,我的數據庫是MySQL的,我可以切換到PostgreSQL

+1

如果你可以使用UUID的代碼,他們可以被批量插入並且不會發生衝突。數據庫很可能也可以在服務器端生成它們。 – Thilo

+0

但我的代碼需要是隨機數 –

+0

UUID是一個隨機數(只是很長的一個)。 – Thilo

回答

0

,我認爲你是問你要插入記錄1 - 同時100從不同的用戶。你可以寫,鑑於使用事務插入僞代碼字符串參數列表的存儲過程:

數據,數據2,數據3 ... 開始反式 插入每個記錄與唯一ID表這是一個身份(索引計數器) 承諾

這可能是你想要的。

+0

但我的代碼需要是隨機數 –

+0

您可以根據用戶名+ random()函數生成一個隨機數。這可能會給你你想要的。我認爲你應該更多地解釋你想要完成的事情。你也可以通過在sql或c#中使用guid來生成一個唯一的代碼。這總是會產生一個獨特的價值。 – foxjazzHack

0

如果您使用PostgreSQL和您的用戶始終將產生100碼,那麼你可以使用一個簡單的順序,並經過添加任何兩個數字:

CREATE SEQUENCE id_template; 

-- get 100 new IDs: 
SELECT idt + s AS id 
FROM (SELECT nextval('serial') * 100 idt) idt, -- takes only one value 
    generate_series(0, 99) s; -- adds two digits 
+0

我會研究postgrelSQL,謝謝 –