MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment fonctionne UUID() dans MariaDB

Dans MariaDB, UUID() est une fonction intégrée qui renvoie un identifiant unique universel (UUID).

L'UUID est généré conformément aux spécifications "DCE 1.1 :Remote Procedure Call" (Annexe A) CAE (Common Applications Environment) publiées par The Open Group en octobre 1997 (Document Number C706).

Syntaxe

La syntaxe ressemble à ceci :

UUID()

Ainsi, aucun argument n'est requis (ou accepté).

Exemple

Voici un exemple pour illustrer :

SELECT UUID();

Résultat :

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

Si je l'appelle une autre fois, j'obtiens une valeur différente :

SELECT UUID();

Résultat :

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

À propos de l'UUID

Un UUID (Universal Unique Identifier) ​​est un numéro conçu pour être unique au monde dans l'espace et dans le temps. Deux appels à UUID() sont censés générer deux valeurs différentes, même si ces appels sont effectués sur deux ordinateurs distincts qui ne sont pas connectés l'un à l'autre.

Un UUID est un nombre de 128 bits représenté par une chaîne utf8 de cinq nombres hexadécimaux dans aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format :

  • Les trois premiers chiffres sont générés à partir d'un horodatage.
  • Le quatrième nombre préserve l'unicité temporelle au cas où la valeur d'horodatage perdrait sa monotonie (par exemple, en raison de l'heure d'été).
  • Le cinquième numéro est un numéro de nœud IEEE 802 qui fournit l'unicité spatiale. Un nombre aléatoire est substitué si ce dernier n'est pas disponible. Dans de tels cas, l'unicité spatiale ne peut être garantie. Cela dit, une collision devrait être un événement extrêmement peu probable.

Notez que les déclarations utilisant le UUID() fonction ne sont pas sûrs pour la réplication basée sur des instructions.

Comparé au SYS_GUID() Fonction

Le résultat renvoyé par UUID() est similaire à celui retourné par le SYS_GUID() fonction, sauf que SYS_GUID() n'inclut pas le trait d'union (- ) dans le résultat (alors que UUID() fait).

Voici une comparaison des deux :

SELECT 
    UUID(),
    SYS_GUID();

Résultat :

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

Le SYS_GUID() a été introduite dans MariaDB 10.6.1 pour améliorer la compatibilité Oracle.

Il y a aussi un UUID_SHORT() fonction qui renvoie un UUID court sous la forme d'un entier non signé 64 bits.

Passer des arguments

Comme mentionné, UUID() n'accepte aucun argument. Voici ce qui se passe lorsque je passe un argument :

SELECT UUID(3);

Résultat :

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