2013-05-13 3 views
0

S'il vous plaît aidez-moinombre aléatoire dans le tableau SQL Server

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

besoin que l'ID est automatiquement pris au hasard toujours des nombres différents. Il doit y avoir 10 chiffres sans aucune logique.

Exemple:

5478596256 Bob Brown 
9852451254 Tom Jones 
7078596585 Jason Sadler 
+0

déjà répondu, ici http://stackoverflow.com/questions/16447254/randomly-generating-unique-number-between-1-999-for-primary-key-in-table/16447477#16447477 –

+3

Est-ce que ça doit vraiment être un nombre aléatoire? Pourquoi ne pas utiliser un identifiant séquentiel? Garanti pour être unique, et c'est quelque chose de intégré. Une autre option est GUID, mais alors, je ne suis pas un nombre entier. Je suppose qu'il doit être un entier basé sur votre définition de table. –

+0

@StealthRabbi je vous remercie pour ansewring. peux-tu me donner un petit code par exemple? – iCoder

Répondre

0

Envisager la création d'un 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) 
) 

Une autre option serait de créer un uniqueidentifier (GUID)

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

Personnellement, j'aime ID séquentiel. Il est plus facile de déboguer une clé si c'est un entier simple plutôt qu'un guide lourd. Pointer manuellement dans SQL pour tester/déboguer est très trépidant lorsque vous devez poinçonner un GUID et obtenir le formatage correct. En outre, un ID séquentiel vous donne une autre façon de regarder l'ordre des enregistrements. Mais cela peut dépendre de vos besoins spécifiques d'application. En outre, un ID séquentiel est plus universel qu'un GUID. GUID est un peu un Microsoft-isme, et tandis qu'ils peuvent être stockés dans d'autres DB comme Oracle, l'ordre des octets est unique à SQL Server, et ne se connecte pas facilement.

En outre, juste une intuition, mais les ID entiers séquentiels peuvent avoir de meilleures performances avec l'indexation.

+0

MERCI! TRÈS UTILE . – iCoder

+0

Vous êtes les bienvenus. Si vous pensez que cela répond adéquatement à votre question, veuillez la marquer comme réponse afin que la question puisse être fermée. –

+0

@iCoder: http://meta.stackexchange.com/a/5235/161449 –

0

Si l'exigence est pour un nombre unique de 10 chiffres pour chaque enregistrement, sans logique, alors cela va le faire. En outre, vous pouvez envisager d'utiliser BIGINT au lieu de INT pour votre colonne ID puisque vous commenceriez déjà à 1 milliard pour les 10 chiffres requis. La limite supérieure pour le type de données INT est 2147483647.

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