risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come generare automaticamente un ID univoco in SQL come UID12345678?

Voglio generare automaticamente un ID univoco con allegato un codice per-definito. 

ex: 

UID12345678
CUSID5000

Ho provato il tipo di dati uniqueidentifier ma genera un id che non è adatto per un id utente.

Qualcuno ha suggerimenti?

9
Nishantha

L'unica soluzione praticabile secondo me è l'uso 

  • una colonna ID INT IDENTITY(1,1) per consentire a SQL Server di gestire l'incremento automatico del valore numerico
  • una colonna computed, persisted per convertire quel valore numerico al valore che ti serve

Quindi prova questo:

CREATE TABLE dbo.tblUsers
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   UserID AS 'UID' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED,
   .... your other columns here....
  )

Ora, ogni volta che inserisci una riga in tblUsers senza specificare valori per ID o UserID:

INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

quindi SQL Server aumenterà automaticamente e in modo sicuro il valore ID e UserID conterrà valori come UID00000001, UID00000002, ...... e così via - automaticamente, in modo sicuro, affidabile, senza duplicati.

Aggiornamento: la colonna UserID è computed - ma ancora OF COURSE ha un tipo di dati, come una rapida occhiata all'Explorer di oggetti rivela:

 enter image description here

27
marc_s
CREATE TABLE dbo.tblUsers
(
    ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
    UserID AS 'UID' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED, 
    [Name] VARCHAR(50) NOT NULL,
)

marc_s's Answer Snap

snap di risposta di marc_s

2
Nishantha

Se vuoi aggiungere l'id manualmente puoi usare,

Metodo PadLeft () o String.Format ()

string id;
char x='0';
id=id.PadLeft(6, x);
//Six character string id with left 0s e.g 000012

int id;
id=String.Format("{0:000000}",id);
//Integer length of 6 with the id. e.g 000012

Quindi puoi aggiungere questo con UID.

0
Nishantha