Pular para o conteúdo principal
O MySQL armazena um UUID como texto ou como um BINARY(16) que você converte à mão. O vsql_uuid adiciona um tipo de coluna uuid real que guarda 16 bytes, é exibido na forma familiar de 36 caracteres e é ordenado pela sua própria regra de comparação. Ele também gera as versões 1, 3, 4, 5, 6 e 7, enquanto o UUID() do próprio MySQL produz somente a versão 1.

Instalar

O vsql_uuid.veb já está no diretório lib/veb/ do servidor se você instalou o VillageSQL com o script de instalação, a imagem Docker ou um tarball de release. Instale-o no servidor com uma única instrução:
Confirme que ele está lá:
Para compilá-lo você mesmo, siga as instruções de compilação no repositório.

O que ela adiciona

O tipo uuid

Declare a coluna como uuid. Ela ocupa 16 bytes e funciona como chave primária.

Funções

Exemplo

Use um identificador versão 7 como chave primária, de modo que as linhas gravadas depois sejam ordenadas após as linhas gravadas antes, e depois leia a versão de volta:
Derive um identificador estável a partir de um nome:
A ordenação acima vale somente entre milissegundos. A versão 7 coloca um timestamp em milissegundos na frente e preenche o resto aleatoriamente, sem contador, então dois valores gerados no mesmo milissegundo são ordenados em ordem aleatória um em relação ao outro. É por isso que o exemplo insere as duas linhas em instruções separadas. Use UUID_V6() quando você precisa de uma ordenação mais fina que essa.
Uma coluna uuid aceita um literal de string, mas não uma expressão de string. Assim, INSERT INTO orders VALUES ('550e8400-e29b-41d4-a716-446655440000', ...) funciona, enquanto INSERT INTO orders VALUES (UUID(), ...) falha com ERROR 3219 (HY000): Incorrect uuid value: cannot implicitly cast string expression. Use explicit conversion for column 'id' at row 1. Em vez disso, gere o valor com uma das funções acima.

Veja também