I MariaDB, UUID()
er en indbygget funktion, der returnerer en Universal Unique Identifier (UUID).
UUID er genereret i henhold til "DCE 1.1:Remote Procedure Call" (tillæg A) CAE (Common Applications Environment) specifikationer udgivet af The Open Group i oktober 1997 (dokumentnummer C706).
Syntaks
Syntaksen ser sådan ud:
UUID()
Så der kræves ingen argumenter (eller accepteres).
Eksempel
Her er et eksempel til demonstration:
SELECT UUID();
Resultat:
+--------------------------------------+ | UUID() | +--------------------------------------+ | e5aa36ee-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Hvis jeg kalder det en anden gang, får jeg en anden værdi:
SELECT UUID();
Resultat:
+--------------------------------------+ | UUID() | +--------------------------------------+ | f11b4702-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Om UUID
Et UUID (Universal Unique Identifier) er et tal, der er designet til at være globalt unikt i rum og tid. To opkald til UUID()
forventes at generere to forskellige værdier, selvom disse opkald udføres på to separate computere, der ikke er forbundet med hinanden.
Et UUID er et 128-bit tal repræsenteret af en utf8-streng med fem hexadecimale tal i aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
format:
- De første tre tal genereres ud fra et tidsstempel.
- Det fjerde tal bevarer tidsmæssig unikhed i tilfælde af, at tidsstempelværdien mister monotoni (f.eks. på grund af sommertid).
- Det femte nummer er et IEEE 802 nodenummer, der giver rumlig unikhed. Et tilfældigt tal erstattes, hvis sidstnævnte ikke er tilgængeligt. I sådanne tilfælde kan rumlig unikhed ikke garanteres. Når det er sagt, burde en kollision være en hændelse med ekstremt lav sandsynlighed.
Bemærk, at sætninger, der bruger UUID()
funktion er ikke sikre til sætningsbaseret replikering.
Sammenlignet med SYS_GUID()
Funktion
Resultatet returneret af UUID()
ligner den, der returneres af SYS_GUID()
funktion, bortset fra at SYS_GUID()
inkluderer ikke bindestregsymbolet (-
) i resultatet (hvorimod UUID()
gør).
Her er en sammenligning af de to:
SELECT
UUID(),
SYS_GUID();
Resultat:
+--------------------------------------+----------------------------------+ | UUID() | SYS_GUID() | +--------------------------------------+----------------------------------+ | 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 | +--------------------------------------+----------------------------------+
SYS_GUID()
funktion blev introduceret i MariaDB 10.6.1 for at forbedre Oracle-kompatibiliteten.
Der er også en UUID_SHORT()
funktion, der returnerer en kort UUID som et 64-bit usigneret heltal.
Bestående argumenter
Som nævnt, UUID()
accepterer ingen argumenter. Her er, hvad der sker, når jeg sender et argument:
SELECT UUID(3);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'