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: