In MariaDB, UUID()
è una funzione incorporata che restituisce un UUID (Universal Unique Identifier).
L'UUID è generato secondo "DCE 1.1:Remote Procedure Call" (Appendice A) Specifiche CAE (Common Applications Environment) pubblicate da The Open Group nell'ottobre 1997 (documento numero C706).
Sintassi
La sintassi è questa:
UUID()
Quindi, nessun argomento è richiesto (o accettato).
Esempio
Ecco un esempio da dimostrare:
SELECT UUID();
Risultato:
+--------------------------------------+ | UUID() | +--------------------------------------+ | e5aa36ee-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Se lo chiamo un'altra volta, ottengo un valore diverso:
SELECT UUID();
Risultato:
+--------------------------------------+ | UUID() | +--------------------------------------+ | f11b4702-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Informazioni sull'UUID
Un UUID (Universal Unique Identifier) è un numero progettato per essere globalmente unico nello spazio e nel tempo. Due chiamate a UUID()
dovrebbero generare due valori diversi, anche se queste chiamate vengono eseguite su due computer separati che non sono collegati tra loro.
Un UUID è un numero a 128 bit rappresentato da una stringa utf8 di cinque numeri esadecimali in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
formato:
- I primi tre numeri sono generati da un timestamp.
- Il quarto numero conserva l'unicità temporale nel caso in cui il valore del timestamp perda monotonia (ad esempio, a causa dell'ora legale).
- Il quinto numero è un numero di nodo IEEE 802 che fornisce l'unicità spaziale. Un numero casuale viene sostituito se quest'ultimo non è disponibile. In questi casi, l'unicità spaziale non può essere garantita. Detto questo, una collisione dovrebbe essere un evento a probabilità estremamente bassa.
Nota che le istruzioni usano UUID()
non sono sicure per la replica basata su istruzioni.
Rispetto a SYS_GUID()
Funzione
Il risultato restituito da UUID()
è simile a quello restituito da SYS_GUID()
funzione, tranne che SYS_GUID()
non include il simbolo del trattino (-
) nel risultato (mentre, UUID()
fa).
Ecco un confronto tra i due:
SELECT
UUID(),
SYS_GUID();
Risultato:
+--------------------------------------+----------------------------------+ | UUID() | SYS_GUID() | +--------------------------------------+----------------------------------+ | 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 | +--------------------------------------+----------------------------------+
Il SYS_GUID()
la funzione è stata introdotta in MariaDB 10.6.1 per migliorare la compatibilità Oracle.
C'è anche un UUID_SHORT()
funzione che restituisce un UUID breve come intero senza segno a 64 bit.
Passaggio di argomenti
Come accennato, UUID()
non accetta argomenti. Ecco cosa succede quando passo un argomento:
SELECT UUID(3);
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'