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?
L'unica soluzione praticabile secondo me è l'uso
ID INT IDENTITY(1,1)
per consentire a SQL Server di gestire l'incremento automatico del valore numericoQuindi 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:
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,
)
snap di risposta di marc_s
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.