Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment générer automatiquement un identifiant unique en SQL comme UID12345678 ?

La seule solution viable à mon avis est d'utiliser

  • un ID INT IDENTITY(1,1) pour que SQL Server gère l'incrémentation automatique de votre valeur numérique
  • un calculé, persistant colonne pour convertir cette valeur numérique en la valeur dont vous avez besoin

Alors 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 valeurs pour ID ou UserID :

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

alors SQL Server va automatiquement et en toute sécurité augmenter votre ID valeur et UserID contiendra des valeurs comme UID00000001 , UID00000002 ,...... et ainsi de suite - automatiquement, en toute sécurité, de manière fiable, sans doublons.

Mise à jour : la colonne UserID est calculé - mais cela reste BIEN SÛR a un type de données , comme un rapide coup d'œil dans l'Explorateur d'objets révèle :