Ce face UUID()
UUID() returnează un text de forma aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee (32 de cifre hexazecimale și 4 cratime). Două apeluri dau valori diferite chiar și pe servere diferite, așa că un UUID poate fi folosit ca cheie primară în sisteme distribuite sau ca ID public, greu de ghicit în ordine.
Este UUID versiunea 1: primele trei grupuri vin din momentul generării, iar ultimul din adresa plăcii de rețea (sau un număr aleatoriu). Valorile sunt unice, dar nu imprevizibile; pentru token-uri de securitate folosește RANDOM_BYTES().
Ca să ocupe puțin loc într-un index, un UUID se poate salva în BINARY(16) cu UUID_TO_BIN() și se citește înapoi cu BIN_TO_UUID().
Ce returnează
Un text de 36 de caractere (utf8mb3).
Exemple
Exemplul 1: Un UUID nou
SELECT UUID();
Rezultat posibil (diferă la fiecare rulare)
+--------------------------------------+
| UUID() |
+--------------------------------------+
| 3f0d6c2a-a7f1-11f1-9c4e-0242ac120002 |
+--------------------------------------+
Exemplul 2: Proprietățile valorilor generate
SELECT LENGTH(UUID()) AS lungime,
UUID() <> UUID() AS diferite,
IS_UUID(UUID()) AS valid;
Rezultat
+---------+----------+-------+
| lungime | diferite | valid |
+---------+----------+-------+
| 36 | 1 | 1 |
+---------+----------+-------+
Exemplul 3: UUID ca valoare implicită
CREATE TABLE comenzi (
cod CHAR(36) DEFAULT (UUID()),
client VARCHAR(30)
);
INSERT INTO comenzi (client) VALUES ('Ana'), ('Dan');
SELECT * FROM comenzi;
Rezultat posibil (diferă la fiecare rulare)
+--------------------------------------+--------+
| cod | client |
+--------------------------------------+--------+
| 8b5e4a10-a7f1-11f1-9c4e-0242ac120002 | Ana |
| 8b5e4f6e-a7f1-11f1-9c4e-0242ac120002 | Dan |
+--------------------------------------+--------+
Greșeli frecvente
- Salvezi UUID-uri ca
VARCHAR(36)într-o cheie primară foarte mare. Indexul ocupă de peste două ori mai mult; foloseșteBINARY(16)cuUUID_TO_BIN(). - Folosești
UUID()ca token secret (de exemplu, link de resetare a parolei). Valorile pot fi ghicite parțial; foloseșteRANDOM_BYTES().
Comenzi înrudite
UUID_TO_BIN(): Transformă un UUID text (36 de caractere) în 16 octeți binari, potriviți pentru coloane BINARY(16).BIN_TO_UUID(): Transformă un UUID binar (16 octeți) înapoi în text de 36 de caractere.IS_UUID(): Verifică dacă un text este un UUID valid: 1 (da), 0 (nu) sau NULL.UUID_SHORT(): Generează un identificator unic ca număr întreg pe 64 de biți (mai scurt decât UUID()).