sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer UUID() i MariaDB

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'

  1. Identitetslignende kolonne, men baseret på Group By-kriterier

  2. Fjernelse af foranstillede nuller fra varchar sql developer

  3. Forbindelsesstrengparametre for Excel-datakilder

  4. Sådan fungerer LCASE()-funktionen i MySQL