0
我有一個要求生成一個隨機數(代替身份),所以我嘗試了這些方法,但插入數據後,我遇到了一段時間的主鍵違規。數字(16,10)數據類型的隨機數
嘗試#1(舊的查詢):
SELECT CONVERT(NUMERIC (14,2), GETDATE()) * rand()
FROM sometable
嘗試#2(修改的查詢):
SELECT CONVERT(NUMERIC(14,2), GETDATE()) * RAND(CAST(NEWID() AS VARBINARY))
FROM sometable
注:
第一個查詢總是得到當我們有多個記錄插入時重複。
第二個查詢在插入批量記錄前重複:ex:每個事務5000條記錄。
樣本表結構:
CREATE table #test
(
id numeric(16,10) primary key
)
查詢:
INSERT into #test (ID)
SELECT CONVERT(NUMERIC(14, 2), GETDATE()) * RAND(CAST(NEWID() AS VARBINARY))
FROM sys.objects
SELECT * FROM #test
要求:
我需要插入任何大量的行沒有任何主鍵衝突。
請注意 - 我也歡迎任何其他備用想法。
在此先感謝..
請糾正我,如果我的問題不夠清楚。
你將永遠無法保證任何隨機生成的號碼已經不存在在表格中。你將不得不提前檢查,或處理PK違規。 – 2014-12-02 18:09:02
嗨比爾..是否有任何替代方案你能建議.. – user3094037 2014-12-02 18:13:26
爲什麼要求排除使用'IDENTITY'?這是爲了這個任務。 – 2014-12-02 18:30:01