Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL - valore di decremento automatico

Non dovresti farlo.
Non prendere un identificatore univoco con incremento automatico come numero ordinale.
La parola "unico" significa che l'identificatore deve essere bloccato nella sua riga per sempre .

Non c'è alcuna connessione tra questi numeri e l'enumerazione.
Immagina di voler selezionare i record in ordine alfabetico. Dove andrebbero a finire i tuoi preziosi numeri? Un database non è come una lista ordinata, come probabilmente pensi. Non è un file flat con righe memorizzate in un ordine predefinito. Ha un'ideologia completamente diversa. Le righe nel database non hanno alcun ordine. E verrà ordinato solo all'orario prescelto, se esplicitamente impostato da ORDER BY clausola.
Inoltre, un database dovrebbe eseguire una ricerca per te. Quindi puoi dire che con le righe filtrate o con un ordine diverso questo numero di incremento automatico non avrà assolutamente nulla a che fare con le posizioni delle righe reali.

Se vuoi enumerare l'output, è un lavoro del livello di presentazione. Basta aggiungere un contatore sul lato PHP.

E ancora:questi numeri dovrebbero identificare un certo record. Se modifichi questo numero, non troverai mai più il tuo record.

Prendi questo stesso sito per esempio. Stack Overflow identifica le sue domande con un tale numero:

Quindi, immagina di aver salvato l'indirizzo di questa pagina in un segnalibro. Ora arriva Jeff e rinumera l'intero database. Premi il tuo segnalibro e atterri sulla domanda diversa. L'intero sito diventerebbe un disastro terribile.

Ricorda:rinumerare gli identificatori univoci è malvagio!