Newsgroup: it.comp.www.php
Titolo: [mysql] autoincrement

Quesito, magari stupido, ma non per me:
ho un campo ID settato con autoincrement
ho fatto alcune prove e sono passato da ID 200 a ID204
ora ho eliminato quei record (da 201 a 204) ma se tento di inserire un
dato mi da lo stesso ID 205 automaticamente
come posso fare a fargli tornare il contatore indietro a 201?
grazie
Luca

 ha scritto nel messaggio
news:n9gnuu8h44q25svm1...@4ax.com...

Sai... ho paura che non sia sempre una cosa intelligente tornare indietro...
cmq puoi fare una query che ti restituisce il massimo degli id e poi alla
nuova riga assegni id massimo+1, no?
Saludos!
--
Gally - WebMaster di GSI
WWW: 
www.gallysoft.it

 ha scritto nel messaggio
news:n9gnuu8h44q25svm1...@4ax.com...

Un campo autoincrement dovresti utilizzarlo come chiave per rendere unica la
riga.. non per avere una serie di numeri progressivi.
Se vuoi resettare il campo lo cancelli e lo ricrei (ma parte da 200? beh..
in quel caso fai il primo insert a 200)
http://www.mysql.com/doc/en/example-AUTO_INCREMENT.html
Altrimenti secondo me č meglio che studi una soluzione su misura senza usare
un autoincrement

 wrote in message
news:n9gnuu8h44q25svm1...@4ax.com...

io solitamente faccio in questo modo....
tabella PIPPO
la copio con il contenuto in PIPPO-old
PIPPO-old la ordino per ID
PIPPO-old elimino il campo ID
elimino la tabella PIPPO
COPIO la tabella PIPPO-old in PIPPO
Ricreo il campo ID come contatore!!
ATTENZIONE, non basta eliminare il campo ID e rimetterlo, dato che
partirebbe ugualmente dal numero 205 e non da 1 (si tiene in memoria
l'ultimo autoindex)
pero' dovrebbero fare in modo che sia possibile farlo :-D non credete?

 l'ultimo autoindex)
No.. guarda che se elimini il campo id e lo rimetti.. questo parte da 1 (mi
riferisco al campo.. non al singolo record).

l'ultimo autoindex)
In teoria sarebbe molto utile, perň i buchi si creano quasi sempre nel
mezzo della serie, e non alla fine.
A quel punto cosa si dovrebbe fare?
Riempire il buco con il primo nuovo record? Perň cosě se speravo che
l'ID mi fornisse informazioni come una sorta di "ordine di
inserimento" dei record, non ha piů senso.
Scalare tutti gli altri record di un posto? Costoso in termini di
risorse e pericoloso da un punto di vista relazionale.
Inoltre, il campo auto-increment č usato quasi sempre come chiave
primaria, che non deve servire come contatore ma per identificare
univocamente un record.
Per contro, secondo me, una funzione molto utile sarebbe quella di
creare "on-the-fly" una colonna numeratore, tipo che so:
   select ( *numerazione()*,cognome,nome) 
          from mia tabella 
          order by cognome;
e che dia una cosa tipo:
+-----------+----------+---------+
|numerazione|cognome   |nome     |
+-----------+----------+---------+
|          1|Bianchi   |Luca     |
|          2|Rossi     |Mario    |
|          3|Verdi     |Giuseppe |
+-----------+----------+---------+
Credo che altri DBMS lo prevedano, con MySQL non ho idea di come si
possa fare. 
Ciao
Matteo

 wrote in message
news:82%G9.50087$3l.14...@twister1.libero.it...

allora
tabella:
ID    nome
1    pippo
2    pluto
3    paperino
ID e' AUTOINDEX, quindi il prossimo valore sara' 4
elimino il campo ID
lo ricreo come contatore, chiave primaria.. etc...
la mia nuova tabella sara:
ID    nome
4    pippo
5    pluto
6    paperino
provare per credere .. :D
Fabrizio

 Fabrizio
Sì.. sì.. ma ti assicuro che se fai così.. il campo id si resetta.. già
provato.. creduto.. e altro :)
Un volta cancellato.. e ricreato con una cosa del tipo
ALTER TABLE `miatabella` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
FIRST ;
l'id parte da 1
Volendo lo fai ripartire da un numero che vuoi tu in questo modo
ALTER TABLE `miatabella` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
FIRST, AUTO_INCREMENT=5
Se ne è già parlato...
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&oe=UTF-8&q=resettare+auto_
increment+mysql&btnG=Cerca+con+Google


okok, controllato, verificato..
il mio errore stava che non resettavo NELLA QUERY (utilizzando solo
phpMyAdmin) l'autoincremental..
ti ringrazio
Fabrizio Parrella
www.bibivu.it
TWiN