Salve a tutti, oggi, per caso, mi sono trovato davanti ad un dubbio amletico.
Ho una tabella di questo tipo:
e mi sono accorto che cancellando un record, il capo id_libro (che è di tipo AUTO_INCREMENT) logicamente continua ad assegnare id non recuperando quelli perduti dalla cancellazione.codice:CREATE TABLE `libri` ( `id_libro` int(11) NOT NULL AUTO_INCREMENT, `isbn` varchar(255) NOT NULL, `autore` varchar(255) NOT NULL, `titolo` varchar(255) NOT NULL, `casa_editrice` varchar(255) NOT NULL, `anno` varchar(4) NOT NULL, `materia` varchar(255) DEFAULT NULL, `prezzo` float NOT NULL, `venduto` varchar(1) NOT NULL DEFAULT '0', `data_vendita` varchar(255) NOT NULL, PRIMARY KEY (`id_libro`), FULLTEXT KEY `autore` (`autore`,`titolo`) );
Se ho i record con id_libro 1,2,3,4,5,6,7,8... e rimuovo il numero 8, al successivo inserimento avrà assegnato il numero 9; idem se rimuovo il numero 4 avrò un buco tra il record 3 ed il record 5.
Siccome sto utilizzando questo tipo di database per organizzare un mercatino del libro usato in cui la catalogazione dei libri avviene per numero crescente da 1 a n, non è cosa buona avere questi buchi di assegnazione.
Esiste un modo per riordinare gli id_libro? In modo che quando si presenta un buco come quello tra 3 e 5 dell'esempio di prima, possa scalare in alto tutta la lista andando ad assegnare nuovamente il numero 4 precedentemente cancellato?
Grazie mille!!

Rispondi quotando