Moim zdaniem jedynym realnym rozwiązaniem jest użycie
ID INT IDENTITY(1,1)
kolumna, aby SQL Server obsługiwał automatyczny przyrost wartości liczbowej- obliczona, utrwalona kolumna, aby przekonwertować tę wartość liczbową na potrzebną wartość
Więc spróbuj tego:
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....
)
Teraz za każdym razem, gdy wstawiasz wiersz do tblUsers
bez określania wartości dla ID
lub UserID
:
INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
wtedy SQL Server automatycznie i bezpiecznie zwiększ swój ID
wartość i UserID
będzie zawierać wartości takie jak UID00000001
, UID00000002
,...... i tak dalej - automatycznie, bezpiecznie, niezawodnie, bez duplikatów.
Aktualizacja: kolumna UserID
jest obliczany - ale nadal OCZYWIŚCIE ma typ danych , jak pokazuje szybki rzut oka do Eksploratora obiektów: