Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como gerar automaticamente id exclusivo no SQL como UID12345678?


A única solução viável na minha opinião é usar
  • um ID INT IDENTITY(1,1) coluna para obter o SQL Server para lidar com o incremento automático do seu valor numérico
  • um computado, persistente coluna para converter esse valor numérico para o valor que você precisa

Então tente isso:
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....
  )

Agora, toda vez que você inserir uma linha em tblUsers sem especificar valores para ID ou UserID :
INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

então o SQL Server irá automaticamente e com segurança aumente seu ID valor e UserID conterá valores como UID00000001 , UID00000002 ,...... e assim por diante - de forma automática, segura, confiável, sem duplicatas.

Atualização: a coluna UserID é computado - mas ainda CLARO tem um tipo de dados , como uma rápida olhada no Pesquisador de Objetos revela: