Ci sarebbe uniqid(), ma di suo non fa controlli sul DB, quindi non ti garantisce che l'id generato sia realmente unico.

Potresti farti una funzione tua che faccia così:
- genera un codice con uniqid()
- verifica con una select se questo codice esiste già nella tabella
- se non esiste usa questo codice
- se esiste genera un nuovo codice e verifica se esiste

Chiaramente questa cosa va in un ciclo while che continua finché non viene generato un codice che non esiste nella tabella.