sql >> Databáze >  >> RDS >> Sqlserver

Jak automaticky vygenerovat jedinečné ID v SQL, jako je UID12345678?

Jediným schůdným řešením je podle mého názoru použít

  • ID INT IDENTITY(1,1) sloupec, aby SQL Server zpracoval automatický přírůstek vaší číselné hodnoty
  • a vypočítané, trvalé sloupec převést tuto číselnou hodnotu na hodnotu, kterou potřebujete

Tak zkuste toto:

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....
  )

Nyní pokaždé, když vložíte řádek do tblUsers bez zadání hodnot pro ID nebo UserID :

INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

pak SQL Server automaticky a bezpečně zvyšte své ID hodnotu a UserID bude obsahovat hodnoty jako UID00000001 , UID00000002 ,...... a tak dále - automaticky, bezpečně, spolehlivě, bez duplikátů.

Aktualizace: sloupec UserID je vypočítán - ale stále SAMOZŘEJMĚtyp dat , jak odhaluje rychlé nahlédnutí do Průzkumníka objektů:



  1. Jak seřadit podle dvou sloupců v SQL?

  2. Jak Cotd() funguje v PostgreSQL

  3. Jak nahradit (null) hodnoty výstupem 0 v PIVOT

  4. Odečtěte hodiny od funkce now().