SQL Server uniek identificatietype
Dit is een GUID-waarde van 16 bytes die wordt gebruikt in een kolom of een lokale variabele. U kunt een waarde van het type uniqueidentifier maken met behulp van de functies NEWID() en NEWSEQUENTIALID().
U kunt ook een GUID-waarde genereren door een tekenreekswaarde te converteren in de notatie xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, waarbij x een hexadecimaal cijfer is in het bereik van 0 – 9.
Vanwege de 'willekeurigheid' van een GUID-waarde is gegarandeerd dat een GUID-waarde uniek kan zijn in een database of zelfs op servers. Dit is een uitstekend gegevenstype voor het uniek identificeren van een bepaalde waarde.
SQL Server NEWID() Functie
Met de functie NEWID() kunnen we een nieuwe unieke waarde van het type uniqueidentifier genereren. De syntaxis is zoals weergegeven:
WIJZIGEN ( )
Bijvoorbeeld:
declareer @gid uniqueidentifier;
set @gid = WIJZIGEN();
selecteer @gid als gid;
De bovenstaande instructies moeten een GUID-waarde retourneren als:
goed873412E2-A926-4EAB-B99F-A1E47E727355
SQL Server NEWSEQUENTIALID() Functie
Met deze functie kunt u opeenvolgend unieke GUID-waarden genereren. Het werkt door een GUID-waarde te genereren die groter is dan de eerder gegenereerde GUID.
Dit maakt het handig voor gebruik als rij-ID, omdat het waarden opeenvolgend genereert in plaats van handmatig de volgende GUID-waarde te bepalen met de functie NEWID().
De syntaxis van de functie is zoals weergegeven:
NIEUWSEQUENTIEID ( )SQL Server GUID gebruiken als rij-ID
Het volgende voorbeeld laat zien hoe u de functie newsequentialid() gebruikt als rij-ID voor een bepaalde kolom.
tabelitems maken (id uniqueidentifier niet null standaard newsequentialid() primaire sleutel,
servernaam varchar(50),
server_address varchar(255) niet null,
compressiemethode varchar(100) standaard 'geen',
size_on_disk float niet null,
size_compressed vlotter,
total_records int niet null,
init_date datum
);
invoegen
naar binnen
INGANGEN(servernaam,
server adres,
compressiemethode,
grootte op schijf,
grootte_gecomprimeerd,
totaal_records,
begin_datum)
waarden
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000,'2022-11-11'),
('Elasticsearch','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');
In het bovenstaande voorbeeld stellen we de kolom ID in als het type uniqueidentifier en de standaardwaarde als de waarde die wordt gegenereerd door de functie newsequentialid().
De resulterende tabel is zoals weergegeven:
selecteer * uit ingangen;Uitgang:
Hoewel het gebruik van GUID-waarden strikt uniek kan zijn, kan het moeilijk zijn bij het opsporen van fouten of het selecteren van specifieke waarden.
Conclusie
In deze handleiding hebt u meer geleerd over het type uniqueidentifier in SQL Server. U hebt ook geleerd hoe u GUID-waarden kunt genereren met de functies NEWID() en NEWSEQUENTIALID().