query delete e ID progressivo..

  • Creatore Discussione Creatore Discussione robysdc
  • Data di inizio Data di inizio

robysdc

Nuovo Utente
15 Nov 2008
21
0
0
Salve

dato che più di una volta mi avete illuminato vi posto un'altra richiesta di aiuto..

ho un database mysql così composto:

1-NOME1-COGNOME1-MAIL1-ECC..
2-NOME2-COGNOME2-MAIL2-ECC..
3-NOME3-COGNOME3-MAIL3-ECC..

una volta che elimino una riga (es. la seconda) mi ritrovo in queste condizioni:

1-NOME1-COGNOME1-MAIL1-ECC..
3-NOME3-COGNOME3-MAIL3-ECC..

come potrei fare per aggiornare l'ID ed ottenere una numerazione continua tipo:

1-NOME1-COGNOME1-MAIL1-ECC..
2-NOME3-COGNOME3-MAIL3-ECC..

Grazie a tutti x l'aiuto
 
Ciao, scusa la domanda brutale, ma perchè vuoi fare una cosa simile? Non vedo dove sia il problema a lasciare dei buchi tra gli ID, non c'è pericolo che un record ci caschi dentro e si (cor)rompa :D

Inoltre per fare quello che vuoi si dovrebbe fare un UPDATE di tutti i record con ID maggiore a quello appena rimosso scalando "1". Pensa ad una tabella con 100.000 record a cui venga eliminato il record con ID 57 :gun:

E dopo aver finito gli UPDATE sui 99.943 record, devi anche fare un ALTER TABLE per risistemare il prossimo auto_increment inserito.

Ci sarebbe anche un modo più rapido per risistemare tutto, e cioè eliminare dalla tabella il campo contenente l'ID con l'AUTO_INCREMENT e poi ricrearlo (sempre con l'AUTO_INCREMENT). Questo fa tutto quello che chiedi, il problema è che se usi questo campo per relazioni con altre tabelle queste si perdono...
 
concordo con Trogo, dovresti praticamente alterare l'intero contenuto della tabella ad ogni delete, se vuoi associare un numero d'ordine ai record senza "buchi" ti basta utilizzare un ciclo for invece che stampare l'id.
 

Discussioni simili