sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo generar automáticamente una identificación única en SQL como UID12345678?

En mi opinión, la única solución viable es usar

  • un ID INT IDENTITY(1,1) columna para que SQL Server maneje el incremento automático de su valor numérico
  • un calculado, persistente columna para convertir ese valor numérico al valor que necesita

Así que prueba esto:

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....
  )

Ahora, cada vez que inserte una fila en tblUsers sin especificar valores para ID o UserID :

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

entonces SQL Server automáticamente y de forma segura aumenta tu ID valor y UserID contendrá valores como UID00000001 , UID00000002 ,...... y así sucesivamente - de forma automática, segura, fiable, sin duplicados.

Actualización: la columna UserID es calculado - pero aun así POR SUPUESTO tiene un tipo de datos , como revela un vistazo rápido al Explorador de objetos: