In SQL Server kunt u de NEWID()
. gebruiken functie om een unieke waarde te creëren.
Meer specifiek is het een RFC4122-compatibele functie die een unieke waarde van het type uniqueidentifier creëert .
De waarde die NEWID()
produceert is een willekeurig gegenereerde 16-byte GUID (Globally Unique IDentifier). Dit wordt ook wel een UUID (Universally Unique IDentifier) genoemd.
Voorbeeld 1 – Basis SELECT-instructie
Hier is een korte SELECT
statement dat NEWID()
. retourneert :
SELECT NEWID() AS Result;
Resultaat:
+--------------------------------------+ | Result | |--------------------------------------| | ab1b299b-9781-48d9-bedc-f238f6f5cc57 | +--------------------------------------+
RFC4122 bevat 5 versies (of subtypes). Ik kan zien dat dit voorbeeld RFC4122 versie 4 gebruikt, vanwege de 4 op de betreffende plek. Versie 4 specificeert dat de GUID willekeurig of pseudo-willekeurig wordt gegenereerd. Andere versies gebruiken andere methoden om de GUID te genereren.
Als je alle voorbeelden op deze pagina bekijkt, zul je merken dat ze allemaal uniek zijn, maar ze hebben allemaal de vorm: xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx , wat betekent dat het allemaal GUID's van versie 4 zijn en daarom allemaal willekeurig of pseudo-willekeurig worden gegenereerd.
Voorbeeld 2 – NEWID() gebruiken met een variabele
Hier is een voorbeeld van het plaatsen van de waarde van NEWID()
in een variabele en selecteer deze vervolgens.
DECLARE @myguid uniqueidentifier = NEWID(); SELECT @myguid AS Result;
Resultaat:
+--------------------------------------+ | Result | |--------------------------------------| | b6cfb25a-3f81-4e5a-a304-a4b44fb5dbeb | +--------------------------------------+
Voorbeeld 3 – Converteren naar string
Hier is een voorbeeld van het converteren van de variabelewaarde naar een tekenreeks en deze vervolgens afdrukken.
DECLARE @myguid uniqueidentifier = NEWID(); PRINT 'Value: '+ CONVERT(varchar(255), @myguid);
Resultaat:
Value: 9A229A64-6FE0-417E-B07D-78444EA7DA5B
Voorbeeld 4 – Als STANDAARD waarde in een database
Hier is een voorbeeld van het gebruik van NEWID()
als standaardwaarde in een databasekolom.
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;
Resultaat:
+--------------------------------------+----------------------+ | CustomerId | CustomerName | |--------------------------------------+----------------------| | 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin | | 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson | | ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger | +--------------------------------------+----------------------+
In dit voorbeeld maak ik een tabel met een uniqueidentifier kolom met de standaardwaarde gegenereerd door NEWID()
. Vervolgens voeg ik gegevens in die tabel in. Wanneer ik dit doe, specificeer ik niet de CustomerId
waarde, dus het gebruikt de standaardwaarde (die wordt gegenereerd door NEWID()
). Ten slotte selecteer ik de inhoud van de tabel, die laat zien dat de GUID wordt gebruikt die is gegenereerd met elke rij-invoeging.
Voorbeeld 5 – Expliciet gespecificeerd in de INSERT-instructie
U kunt ook expliciet NEWID()
. gebruiken bij het invoeren van de gegevens.
Zoals dit:
INSERT Customer (CustomerId, CustomerName) VALUES (NEWID(), 'Bart Farnsworth'), (NEWID(), 'Bruce Norris'); SELECT * FROM Customer;
Resultaat:
+--------------------------------------+----------------------+ | CustomerId | CustomerName | |--------------------------------------+----------------------| | 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin | | 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 gebruik ik NEWID()
om een unieke ID voor elke rij te genereren, en daarom wordt de standaardwaarde niet gebruikt. Hoe dan ook, beide worden gegenereerd door NEWID()
dus we krijgen in feite hetzelfde resultaat:een willekeurig gegenereerde GUID.