Svaki korisnik ima svoj
jedinstven 6-cifren slucajan broj (token) generisan prilikom registracije. Broj se generise na ovaj nacin:
Kôd:
SELECT
random.value
FROM
(SELECT 100000 + TRUNCATE(RAND(UNIX_TIMESTAMP()) * 900000, 0) AS value) random
WHERE
random.value NOT IN (SELECT token FROM user)
Ako ovo vrati NULL, to znaci da je RAND() vratio broj koji vec postoji u koloni user.token. U petlji, gornji SELECT izvrsava dok se ne dobije broj. Taj broj se insertuje zajedno sa ostalim podacima.
E sad, ovo radi "dovoljno dobro"

, medjutim postoje 2 problema:
1. radice sve sporije kako bude korisnika
2. moguce je da se dogode 2 identicna tokena - mogu to da resim tako sto bi bio UNIQUE INDEX na polju, a u slucaju INSERT greske ponovi se ceo proces generisanja.
PITANJE: da li neko zna za inteligentnije resenje za ovaj problem, idealno bi bilo da nema petlje tako da se izbor jedinstvenog slucajnog broja moze staviti u INSERT.