2013-06-04 42 views
1

我希望MYSQL爲每個條目分配一個16位數字,因爲它將用於私人信用卡服務。我該怎麼做呢??MYSQL自動增加每個條目的16位數字

我已成立被稱爲ID自動遞增和BIGINT領域,但它仍然只是爲了分配號碼從1開始

我需要的數字是16位長和隨機的。

請幫忙!

+0

通常情況下,信用卡號碼的一個或多個數字包含某種檢查值以檢測打字錯誤。 – Marichyasana

回答

2

您可以設置自動遞增數在任何號碼,即可開始

ALTER TABLE MY_TABLE AUTO_INCREMENT = 1000000000000000; -- the first 16-digit number 

指定數量的唯一限制是,它是不低於指定表的自動增量列的當前最大數量少。

但是這不會提供隨機數字。

要創建一個隨機的16位號碼,你可以在使用PASSWORD()功能,它創建了一個16位十六進制數字插入使用觸發器,並將其轉換成一個號碼,如果你需要對結果調用UNHEX()SUBSTR()捕獲16個隨機數字。

爲了安全起見,你應該傳遞一個帶有值的種子,例如新的id值與來自記錄中的另一條信息連接起來,並與可能與當前時間連接的常量連接起來。這取決於你想要走多遠。

隨機數也可以在您的應用程序代碼中完成,這可能是一個更好的選擇,因爲它比數據庫功夫更容易調試和控制。

+0

因此,我們會收到第一個數字:1000000000000000,然後第二個數字:1000000000000001? – user2371301

+0

是的 - 它增加了一個新的數字插入 – Bohemian

+0

您的隨機數的編輯將啓動在PHP或在哪裏? – user2371301