Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie generiert man automatisch eine eindeutige ID in SQL wie UID12345678?

Die einzig praktikable Lösung ist meiner Meinung nach die Verwendung von

  • eine ID INT IDENTITY(1,1) -Spalte, damit SQL Server die automatische Erhöhung Ihres numerischen Werts handhabt
  • eine berechnete, persistente Spalte, um diesen numerischen Wert in den gewünschten Wert umzuwandeln

Versuchen Sie also Folgendes:

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

Jetzt jedes Mal, wenn Sie eine Zeile in tblUsers einfügen ohne Angabe von Werten für ID oder UserID :

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

dann wird SQL Server automatisch und sicher erhöhen Sie Ihre ID Wert und UserID enthält Werte wie UID00000001 , UID00000002 ,...... und so weiter - automatisch, sicher, zuverlässig, keine Duplikate.

Aktualisierung: die Spalte UserID wird berechnet - aber es ist immer noch NATÜRLICH hat einen Datentyp , wie ein kurzer Blick in den Objekt-Explorer zeigt: