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: