Panowie,
czy jest jakiś wbudowany sposób w MySQL, żeby używać UUID z AUTO_INCREMENT? Czasami przydałoby mi się coś takiego. Podam przykład.
Powiedzmy, że zapragnąłem zrobić własny system captcha. Większość podobnych rozwiązań ma taką wadę, że nie działa, gdy mamy otwartych kilka kart z formularzem captcha, bo na serwerze zapisywana jest w jednym czasie tylko jedna poprawna odpowiedź na użytkownika. Otwierając kolejną kartę z captcha, te otwarte wcześniej pokazują już nieaktualny obrazek. Dlatego ja chcę w formularzu captcha przekazywać specjalny kod, który jest tworzony w bazie danych w momencie wyświetlania zadania captcha jako para: kod i rozwiązanie, na przykład 8kjprmbjxmw9tq2k (kod przekazywany do input hidden) i rozwiązanie "hakuna matata".
To zmyślony przykład, ale dość regularnie napotykam na problem, że chcę generować w bazie UUID. Czasami nawet nie musi to zastępować normalnego klucza, bo służy mi jako "widoczny klucz". Nie chcę, żeby użytkownicy mogli po zwykłym kluczu odczytać który to rekord z kolei, a jakoś muszę zidentyfikować rekord na przykład w formularzu. Zazwyczaj robię to tak, że losuję string w PHP i robię to w pętli tak długo, jak dany string istnieje. Nie ukrywam jednak, że rozwiązanie bazodanowe ułatwiłoby mi życie.
Można też wygenerować miliony losowych stringów i dopasowywać po ID (lub po prostu brać losowe i oznaczać zużyte), jednak średnio mi się podoba ten pomysł, bo znowu jest to jakaś dodatkowa logika.
Co robicie w sytuacjach, gdy potrzebujecie każdy rekord określić losowym i unikalnym ciągiem znaków?