Però ho pensato una cosa... così facendo rischierei di avere, nella tabella utenti, dei campi superflui e inutilizzati per ciascun record.
In pratica utenti diventerebbe così:
email - password - nome - cosgnome - emailUpdate - codiceRandom
emailUpdate e codiceRandom verrebbero utilizzati solo quando effettivamente l'utente chiede di modificare la mail, restando quindi vuoti per la maggior parte del tempo..
Mentre invece creando una tabella collaterale apposita per il servizio di update mail ridurrei lo spreco al minimo creando solo record e campi strettamente necessari (una volta convalidata la mail infatti il record viene del tutto eliminato).
Non so se mi sono spiegato.
Ma torniamo sempre al discorso "tecnico" su quante risorse vengonop sprecate con una soluzione piuttosato che con un'altra..
(cmq il database è MySql)