Je souhaite générer automatiquement un identifiant unique auquel est associé un code prédéfini.
ex:
UID12345678
CUSID5000
J'ai essayé le type de données uniqueidentifier
mais il génère un identifiant qui ne convient pas à un identifiant utilisateur.
Quelqu'un a des suggestions?
À mon avis, la seule solution viable consiste à utiliser
ID INT IDENTITY(1,1)
pour que SQL Server gère l'incrémentation automatique de votre valeur numériqueAlors essayez ceci:
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....
)
Maintenant, chaque fois que vous insérez une ligne dans tblUsers
sans spécifier de valeur pour ID
ou UserID
:
INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
alors SQL Server augmentera automatiquement et en toute sécurité votre valeur ID
, et UserID
contiendra des valeurs telles que UID00000001
, UID00000002
, ...... etc. - automatiquement, en toute sécurité, de manière fiable, sans duplication.
Update: la colonne UserID
est calculée - mais OF COURSE a toujours un type de données, comme le montre rapidement l'explorateur d'objets:
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,
)
la réponse de marc_s
Si vous voulez ajouter l'id manuellement, vous pouvez utiliser,
PadLeft () ou 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
Ensuite, vous pouvez ajouter ceci avec UID.