In SQL Server können Sie die NEWID()
verwenden Funktion, um einen einzigartigen Wert zu schaffen.
Genauer gesagt handelt es sich um eine RFC4122-konforme Funktion, die einen eindeutigen Wert vom Typ uniqueidentifier erstellt .
Der Wert, der NEWID()
erzeugt, ist eine zufällig generierte 16-Byte-GUID (Globally Unique IDentifier). Dies wird auch als UUID (Universally Unique IDentifier) bezeichnet.
Beispiel 1 – Grundlegende SELECT-Anweisung
Hier ist ein schnelles SELECT
Anweisung, die NEWID()
zurückgibt :
SELECT NEWID() AS Result;
Ergebnis:
RFC4122 umfasst 5 Versionen (oder Untertypen). Ich kann sagen, dass dieses Beispiel RFC4122 Version 4 verwendet, wegen der 4 an der entsprechenden Stelle. Version 4 gibt an, dass die GUID zufällig oder pseudozufällig generiert wird. Andere Versionen verwenden andere Methoden, um die GUID zu generieren.
Wenn Sie sich alle Beispiele auf dieser Seite ansehen, werden Sie feststellen, dass sie alle einzigartig sind, aber alle die Form haben: xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx , was bedeutet, dass sie alle GUIDs der Version 4 sind und daher alle zufällig oder pseudozufällig generiert werden.
Beispiel 2 – Verwendung von NEWID() mit einer Variablen
Hier ist ein Beispiel für das Setzen des Werts von NEWID()
in eine Variable ein und wähle sie dann aus.
DECLARE @myguid uniqueidentifier =NEWID();SELECT @myguid AS Result;
Ergebnis:
Beispiel 3 – In String konvertieren
Hier ist ein Beispiel für das Konvertieren des Variablenwerts in eine Zeichenfolge und das anschließende Drucken.
DECLARE @myguid uniqueidentifier =NEWID();PRINT 'Value:'+ CONVERT(varchar(255), @myguid);
Ergebnis:
Wert:9A229A64-6FE0-417E-B07D-78444EA7DA5B
Beispiel 4 – Als STANDARD-Wert in einer Datenbank
Hier ist ein Beispiel für die Verwendung von NEWID()
als Standardwert in einer Datenbankspalte.
USE Test;CREATE TABLE Customer (CustomerId uniqueidentifier NOT NULL DEFAULT NEWID(), CustomerName varchar(70) NOT NULL,);INSERT Customer (CustomerName)VALUES ('Peter Griffin'), ('Marge Simpson'), ( 'Borat Schwarzenegger');SELECT * FROM Customer;
Ergebnis:
+-------------------------------------+------- ---------------+| Kunden-ID | Kundenname ||--------------------------------------+-------- --------------|| 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Greif || 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson || ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger |+--------------------------------------+------- ---------------+
In diesem Beispiel erstelle ich eine Tabelle, die einen uniqueidentifier enthält Spalte mit ihrem von NEWID()
generierten Standardwert . Ich füge dann Daten in diese Tabelle ein. Dabei gebe ich die CustomerId
nicht an Wert, also verwendet es den Standardwert (der von NEWID()
generiert wird ). Schließlich wähle ich den Inhalt der Tabelle aus, die anzeigt, dass die GUID verwendet wird, die bei jeder Zeileneinfügung generiert wurde.
Beispiel 5 – Explizit in der INSERT-Anweisung angegeben
Sie können NEWID()
auch ausdrücklich verwenden beim Einfügen der Daten.
So:
Kunde (Kunden-ID, Kundenname)WERTE EINFÜGEN (NEWID(), 'Bart Farnsworth'), (NEWID(), 'Bruce Norris');SELECT * FROM Customer;
Ergebnis:
+-------------------------------------+------- ---------------+| Kunden-ID | Kundenname ||--------------------------------------+-------- --------------|| 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Greif || 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson || ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger || a21e9a65-5efd-43ea-bd8b-8040b379617a | Bart Farnsworth || 5ae0e501-3944-4be0-bf8a-ba964d8d13ed | Bruce Norris |+--------------------------------------+------- ---------------+
Hier verwende ich NEWID()
um eine eindeutige ID für jede Zeile zu generieren, und daher wird der Standardwert nicht verwendet. In beiden Fällen werden beide von NEWID()
generiert Wir erhalten also effektiv dasselbe Ergebnis – eine zufällig generierte GUID.