2013-05-13 66 views
0

請幫我隨機數

CREATE TABLE UNIVERSITY 
    (
     ID INT, 
     FirstName nvarchar(100), 
     LastName nvarchar(100) 
    ) 

極品ID被自動拍攝隨機總是不同的號碼。它必須是10個數字,沒有任何邏輯。

實施例:

5478596256 Bob Brown 
9852451254 Tom Jones 
7078596585 Jason Sadler 
+0

已經回答了,這裏http://stackoverflow.com/questions/16447254/randomly-generating-unique-number-between-1-999-for-primary-key-in-table/16447477#16447477 – 2013-05-13 17:00:33

+3

它真的必須是一個隨機數嗎?爲什麼不使用順序ID?保證是唯一的,它是內置的。另一個選項是GUID,但是,我不是一個整數。我假設它必須是基於表定義的整數。 – 2013-05-13 17:00:48

+0

@StealthRabbi感謝您的支持。你能給我一些小代碼嗎? – iCoder 2013-05-13 17:05:41

回答

0

考慮創建unique, sequential ID

CREATE TABLE STUDENT 
(
     -- Start at 1 and increment by 1 
     ID INT IDENTITY(1,1) PRIMARY KEY, 
     FirstName nvarchar(100), 
     LastName nvarchar(100) 
) 

另一個選擇是創建唯一標識符(GUID)

CREATE TABLE STUDENT 
(
     ID uniqueidentifier NOT NULL DEFAULT NEWSEQUENTIALID() ROWGUIDCOL PRIMARY KEY, 
     FirstName nvarchar(100), 
     LastName nvarchar(100) 
) 

個人而言,我喜歡順序ID。如果它是一個簡單的整數而不是一個笨拙的指導,那麼調試一個關鍵碼更容易。在SQL中進行測試/調試時,手工打孔非常不方便,因爲必須插入GUID並使格式正確。此外,順序編號爲您提供另一種查看記錄順序的方式。但這可能取決於您的具體應用需求。而且,順序ID比GUID更普遍。 GUID有些微軟主義,雖然它們可以存儲在其他數據庫(如Oracle)中,但字節的順序對於SQL Server是唯一的,並且不易輕鬆移植。

此外,只是一個預感,但順序整數ID可能有更好的索引性能。

+0

謝謝!很有幫助 。 – iCoder 2013-05-13 17:24:09

+0

非常歡迎。如果您覺得此問題能夠充分回答您的問題,請將其標記爲已回答,以便可以關閉該問題。 – 2013-05-13 18:46:35

+0

@iCoder:http://meta.stackexchange.com/a/5235/161449 – 2013-05-14 04:25:15

0

如果要求爲每個記錄的唯一的10位數字,而沒有邏輯,那麼這將做到這一點。此外,您可能需要考慮使用BIGINT而不是INT作爲您的ID列,因爲您已經開始使用10位數的10億位數。 INT數據類型的上限爲2147483647

CREATE TABLE UNIVERSITY 
(
    ID   INT IDENTITY(1000000000, 1) PRIMARY KEY 
    ,FirstName NVARCHAR(100) 
    ,LastName NVARCHAR(100) 
)