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'