Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come generare automaticamente un ID univoco in SQL come UID12345678?

L'unica soluzione praticabile secondo me è usare

  • un ID INT IDENTITY(1,1) colonna per fare in modo che SQL Server gestisca l'incremento automatico del valore numerico
  • un calcolato, persistente colonna per convertire quel valore numerico nel 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 i valori per ID o UserID :

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

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

Aggiornamento: la colonna UserID è calcolato - ma è ancora OVVIAMENTE ha un tipo di dati , come rivela una rapida occhiata all'Esplora oggetti: