sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan genererer man automatisk et unikt id i SQL som UID12345678?

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:



  1. Brug af Oracle® Heterogene Services med to ODBC-datakilder

  2. Hvad er MariaDB ColumnStore?

  3. Hvornår skal du skifte til en større RDS-instans

  4. Hvordan bruger man en Oracle Ref Cursor fra C# ODP.NET som en ReturnValue Parameter uden at bruge en lagret funktion eller procedure?