Den eneste brugbare løsning efter min mening er at bruge
- en
ID INT IDENTITY(1,1)
kolonne for at få SQL Server til at håndtere den automatiske stigning af din numeriske værdi - en beregnet, vedvarende kolonne for at konvertere den numeriske værdi til den værdi, du har brug for
Så prøv dette:
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....
)
Nu, hver gang du indsætter en række i tblUsers
uden at angive værdier for ID
eller UserID
:
INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
så vil SQL Server automatisk og sikkert øg dit ID
værdi og UserID
vil indeholde værdier som UID00000001
, UID00000002
,...... og så videre - automatisk, sikkert, pålideligt, ingen dubletter.
Opdatering: kolonnen UserID
er beregnet - men det stadig SELVFØLGELIG har en datatype , som et hurtigt kig ind i Object Explorer afslører: