Rinumerare ID

Eccomi, come da manuale riapro un post per chiedervi come posso rinumerare il campo ID di un database.

Esempio:

L'ID attuale 1,4,7,13,34,..............lo vorrei rinumerare in 1,2,3,4,5,6 ecc.....

Qual' l'istruzione?

Grazie nuovamente :)

Paolo

inviato 9 anni fa
antares
X 0 X

Non esiste una soluzione nativa al problema ma comunque possibile ottenere tale risultato creando una nuova tabella, identica alla prima, ed inserendo in questa nuova tabella tutti i record della prima usando una query di tipo INSERT ... SELECT

INSERT INTO nuova_tabella (campo1, campo2, ..., campoN) SELECT campo1, campo2, ..., campoN FROM vecchia_tabella

E' importante che tra i campi non compaia quello dell'ID che vuoi rigenerare

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Cavolo Gianni,

cosi la cosa piuttosto fastidiosa.

Nel mio caso genero una pagina di immagini e dati pescandoli da un database. Se in questo database ci sono 50 record, verranno generate 50 immagini e 50 informazioni.

Adesso se io cancello alcuni record (magari una decina in mezzo tra il 20 e il 30 record) e poi ne aggiungo 1 (quindi il 51) quando genero la pagina ripesco 51 record quando in realta' ce ne sono solo 41.

Ecco perch volevo rinumerare gli ID, in modo da ricompattare il database, e non avere "buchi".

A meno che il mio ragionamento sia fuori luogo, e allora come sempre accetto suggerimenti :)

Bye

Paolo

risposto 9 anni fa
antares
X 0 X

Se ci pensi bene avere buchi nell'ID non comporta alcun problema o malfunzionamento del sistema, per cui la necessit di ricompattarli spesso estetica e non funzionale. Per questo non esiste un sistema automatico per ricreare la sequenza degli ID, non ce n' bisogno!

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Si Gianni,

in effetti hai ragione, solo che nel mio caso sono fregato :(

Visto che sull'Id c' questo vincolo, che dici se lo elimino?

In teoria potrei farne a meno di questo campo, sempre che una volta cancellati dei record e poi aggiunti altri record, l'interrogazione delle "ROWS" con una query mi ritorni esattamente il numero di righe.

Cosi posso sempre generare la mia pagina dinamica in base ai record presenti effettivamente, calcolati proprio in base al numero di righe ritornate.

Ok faccio delle prove, ma comunque se vuoi rispondere ugualmente (semmai confermi o smentisci) come sempre ti ringrazio :)

di nuovo Bye

Paolo

risposto 9 anni fa
antares
X 0 X

il conteggio delle righe restituite da da una SELECT indipendente dalla presenza di questo campo

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili