Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak automatycznie wygenerować unikalny identyfikator w SQL, taki jak UID12345678?

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeksy wielokrotne a indeksy wielokolumnowe

  2. Unikaj tych 4 typowych błędów DBA

  3. Funkcja SQL Server ROUND():do czego służy i dlaczego powinno cię to obchodzić?

  4. W jakiej kolumnie należy umieścić indeks klastrowy?

  5. Idź, gdy sterownik SQL Server nie może się pomyślnie połączyć, logowanie nie powiodło się