我必須編寫oracle程序在registered_security_numbers
中註冊16位安全號。 我知道安全號碼的前6位數字是或,其餘10位是隨機產生的。在oracle中生成16位數的隨機數
我有2個可能的解決方案:
寫第二個過程,它產生的所有可能的安全號碼,將它們插入
possible_security_numbers
表,設置屬性free=1
。 然後當我收到一個請求註冊一個新的安全號碼時,我查詢possible_security_numbers
表的隨機安全號碼,這是免費的,並將其插入registered_security_numbers
。每次我提出請求來註冊安全號碼,我生成1234 1100 0000 0000隨機數 - 1234 1299 9999 9999範圍,直到我安全號碼,這不
registered_security_numbers
表存在,並且將其插入registered_security_numbers
。
(1)的方法,我不喜歡,因爲possible_security_numbers
表將包含數十億條目,我不知道它有多好或有多快選擇/更新可以運行。
(2)方法我不喜歡,因爲如果我在registered_security_numbers
表中有很多記錄,從一個範圍產生隨機數可能會重複多次。
我想知道如果任何人有其他的解決方案或解決方案我,這似乎對我不好可以發表評論......
如果使用的ID會很稀疏,我不會預先生成。爲什麼它必須是隨機的?你可以選擇一個隨機數,如果不可用,然後找到第一個可用的id大於或等於(或其他類似的算法)? – Glenn 2013-03-04 21:59:00