sql >> Databasteknik >  >> RDS >> MariaDB

Hur UUID() fungerar i MariaDB

I MariaDB, UUID() är en inbyggd funktion som returnerar en UUID (Universal Unique Identifier).

UUID genereras enligt "DCE 1.1:Remote Procedure Call" (bilaga A) CAE (Common Applications Environment) specifikationer publicerade av The Open Group i oktober 1997 (dokumentnummer C706).

Syntax

Syntaxen ser ut så här:

UUID()

Så inga argument krävs (eller accepteras).

Exempel

Här är ett exempel att visa:

SELECT UUID();

Resultat:

+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| e5aa36ee-cd8a-11eb-be04-88e9fe739f3d |
+--------------------------------------+

Om jag ringer det en annan gång får jag ett annat värde:

SELECT UUID();

Resultat:

+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| f11b4702-cd8a-11eb-be04-88e9fe739f3d |
+--------------------------------------+

Om UUID

En UUID (Universal Unique Identifier) ​​är ett nummer som är designat för att vara globalt unikt i rum och tid. Två anrop till UUID() förväntas generera två olika värden, även om dessa samtal utförs på två separata datorer som inte är anslutna till varandra.

Ett UUID är ett 128-bitars nummer som representeras av en utf8-sträng med fem hexadecimala tal i aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format:

  • De första tre siffrorna genereras från en tidsstämpel.
  • Det fjärde siffran bevarar tidsmässig unikhet om tidsstämpelvärdet tappar monotoni (till exempel på grund av sommartid).
  • Det femte numret är ett IEEE 802-nodnummer som ger rumslig unikhet. Ett slumptal ersätts om det senare inte är tillgängligt. I sådana fall kan rumslig unikhet inte garanteras. Med det sagt borde en kollision vara en händelse med extremt låg sannolikhet.

Observera att satser som använder UUID() funktion är inte säkra för programsatsbaserad replikering.

Jämfört med SYS_GUID() Funktion

Resultatet returneras av UUID() liknar den som returneras av SYS_GUID() funktion, förutom att SYS_GUID() innehåller inte bindestreckssymbolen (- ) i resultatet (medan UUID() gör).

Här är en jämförelse av de två:

SELECT 
    UUID(),
    SYS_GUID();

Resultat:

+--------------------------------------+----------------------------------+
| UUID()                               | SYS_GUID()                       |
+--------------------------------------+----------------------------------+
| 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 |
+--------------------------------------+----------------------------------+

SYS_GUID() funktion introducerades i MariaDB 10.6.1 för att förbättra Oracle-kompatibiliteten.

Det finns också en UUID_SHORT() funktion som returnerar ett kort UUID som ett 64-bitars osignerat heltal.

Godkända argument

Som nämnts, UUID() accepterar inga argument. Så här händer när jag klarar ett argument:

SELECT UUID(3);

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'

  1. Hur funktionen EXPORT_SET() fungerar i MySQL

  2. dbms_output.put_line

  3. Bulk Infoga till Oracle med .NET

  4. postgresql port confusion 5433 eller 5432?