MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como o UUID() funciona no MariaDB


No MariaDB, UUID() é uma função interna que retorna um identificador exclusivo universal (UUID).

O UUID é gerado de acordo com as especificações “DCE 1.1:Remote Procedure Call” (Apêndice A) CAE (Common Applications Environment) publicadas pelo The Open Group em outubro de 1997 (documento número C706).

Sintaxe


A sintaxe fica assim:
UUID()

Portanto, nenhum argumento é necessário (ou aceito).

Exemplo


Segue um exemplo para demonstrar:
SELECT UUID();

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

Se eu chamá-lo outra vez, recebo um valor diferente:
SELECT UUID();

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

Sobre o UUID


Um UUID (Universal Unique Identifier) ​​é um número projetado para ser globalmente único no espaço e no tempo. Duas chamadas para UUID() espera-se que gerem dois valores diferentes, mesmo que essas chamadas sejam executadas em dois computadores separados que não estejam conectados um ao outro.

Um UUID é um número de 128 bits representado por uma string utf8 de cinco números hexadecimais em aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee formato:
  • Os três primeiros números são gerados a partir de um carimbo de data/hora.
  • O quarto número preserva a exclusividade temporal caso o valor do carimbo de data/hora perca a monotonicidade (por exemplo, devido ao horário de verão).
  • O quinto número é um número de nó IEEE 802 que fornece exclusividade espacial. Um número aleatório é substituído se o último não estiver disponível. Nesses casos, a singularidade espacial não pode ser garantida. Dito isso, uma colisão deve ser um evento de probabilidade extremamente baixa.

Observe que as instruções usando o UUID() não são seguros para replicação baseada em instrução.

Comparado com o SYS_GUID() Função


O resultado retornado por UUID() é semelhante ao retornado pelo SYS_GUID() função, exceto que SYS_GUID() não inclui o símbolo de hífen (- ) no resultado (enquanto, UUID() faz).

Aqui está uma comparação dos dois:
SELECT 
    UUID(),
    SYS_GUID();

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

O SYS_GUID() A função foi introduzida no MariaDB 10.6.1 para aprimorar a compatibilidade do Oracle.

Há também um UUID_SHORT() função que retorna um UUID curto como um inteiro sem sinal de 64 bits.

Passando argumentos


Como mencionado, UUID() não aceita argumentos. Aqui está o que acontece quando eu passo um argumento:
SELECT UUID(3);

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