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
Ovsql_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:
O que ela adiciona
O tipo uuid
Declare a coluna comouuid. 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: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
- UUIDs no MySQL — para que serve cada versão e qual escolher
- Estratégias de chave primária — onde uma chave UUID ajuda e onde ela custa
- Instalar extensões — como o
INSTALL EXTENSIONfunciona e onde o servidor procura um bundle - Extensões disponíveis — o catálogo completo
- villagesql/vsql-uuid — código-fonte, instruções de compilação e as limitações conhecidas