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'