it-swarm.com.de

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

Ich möchte automatisch eine eindeutige ID generieren, an die der definierte Code angehängt wird. 

ex: 

UID12345678
CUSID5000

Ich habe uniqueidentifier als Datentyp versucht, aber es wird eine ID generiert, die nicht für eine Benutzer-ID geeignet ist.

Hat jemand Vorschläge?

9
Nishantha

Die einzig gangbare Lösung ist meiner Meinung nach die Verwendung 

  • eine ID INT IDENTITY(1,1)-Spalte, damit SQL Server die automatische Erhöhung Ihres numerischen Werts verarbeitet
  • eine berechnete, persistente -Spalte, um diesen numerischen Wert in den Wert umzuwandeln, den Sie benötigen

Also probiere es aus:

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

Jedes Mal, wenn Sie eine Zeile in tblUsers einfügen, ohne Werte für ID oder UserID anzugeben,

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

dann erhöht SQL Server automatisch und sicher Ihren ID-Wert, und UserID enthält Werte wie UID00000001, UID00000002, ... usw. - automatisch, sicher, zuverlässig, keine Duplikate.

Update: Die Spalte UserID ist berechnet - aber OF COURSE hat einen -Datentyp, wie ein kurzer Blick in den Objekt-Explorer ergibt:

 enter image description here

27
marc_s
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, 
    [Name] VARCHAR(50) NOT NULL,
)

marc_s's Answer Snap

antwort-Snap von marc_s

2
Nishantha

Wenn Sie die ID manuell hinzufügen möchten, können Sie Folgendes verwenden:

PadLeft () oder String.Format () - Methode. 

string id;
char x='0';
id=id.PadLeft(6, x);
//Six character string id with left 0s e.g 000012

int id;
id=String.Format("{0:000000}",id);
//Integer length of 6 with the id. e.g 000012

Dann können Sie dies mit UID anhängen.

0
Nishantha

Referenz: https://docs.Microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql?view=sql-server-2017

- Erstellen einer Tabelle mit NEWID für den Datentyp uniqueidentifier.
CREATE TABLE cust
(
CustomerID uniqueidentifier NOT NULL
DEFAULT newid (),
Company varchar (30) NICHT NULL,
ContactName varchar (60) NICHT NULL,
Adresse varchar (30) NICHT NULL,
Stadt varchar (30) NICHT NULL,
StateProvince varchar (10) NULL,
PostalCode varchar (10) NICHT NULL,
CountryRegion varchar (20) NICHT NULL,
Telefon varchar (15) NICHT NULL,
Fax varchar (15) NULL
);
GEHEN
- Einfügen von 5 Zeilen in die Kundentabelle.
INSERT cust
(Kundennummer, Firma, Kontaktname, Adresse, Stadt, Bundesland,
Postleitzahl, LandRegion, Telefon, Fax)
WERTE
(NEWID (), 'Wartian Herkku', 'Pirkko Koskitalo', 'Torikatu 38', 'Oulu', NULL,
"90110", "Finnland", "981-443655", "981-443655")
, (NEWID (), "Wellington Importadora", "Paula Parente", "Rua do Mercado, 12", "Resende", "SP",
'08737-363', 'Brasil', '(14) 555-8122', '')
, (NEWID (), "Cactus Comidas para Ilevar", "Patricio Simpson", "Cerrito 333", "Buenos Aires", NULL,
"1010", "Argentinien", "(1) 135-5555", "(1) 135-4892")
, (NEWID (), 'Ernst Handel', 'Roland Mendel', 'Kirchgasse 6', 'Graz', NULL,
"8010", "Österreich", "7675-3425", "7675-3426")
, (NEWID (), "Maison Dewey", "Catherine Dewey", "Rue Joseph-Bens 532", "Bruxelles", NULL,
"B-1180", "Belgien", "(02) 201 24 67", "(02) 201 24 68");
GEHEN

0
Julius Depulla