Newsgroup: it.comp.www.php
Titolo: su AUTO_INCREMENT

Ciao,
vorrei autoincrementare valori di tipo 001,002 ecc..
Sapete dirmi che istruzione posso usare con mysql?
In un NG su SQL mi hanno suggerito la proprietą IDENTITY() ma o non sono
riuscito ad usarla io oppure mysql non la supporta..
Grazie!

se lo vuoi fare con mysql quando crei la tabella devi mettere un campo 
di tipo smallint o mediumint o int e dichiararlo auto_increment
ti faccio un esempio
create table Prova (id int auto_increment, ............. , primary key(id));
io credo che tu possa dichiararlo anche non chiave primaria, però di 
solito un campo del genere lo si usa per indicizzare per cui...
spero di avere risposto alla tua domanda


questa procedura mi pare che funzioni solo per autoincrementi del tipo
1,2,3,.... invece a me serve un numero preceduto da zero/i del tipo
001,002,003,....
Per capirci.. mi serve un codice di questo tipo da assegnare ad ogni
articolo che inserisco nella tabella.
Un saluto.

puoi adottare una misura del genere in mysql, e poi se ti servono sempre 
3 cifre puoi fare una cosetta in php del genere che a seconda di quante 
cifre ha il numero in questione ne aggiungi  dinamicamente in fase di 
visualizzazione della pagina...
oppure se ti serve nel database  puoi trattarlo come stringa, però gli 0 
devi sempre aggiungerli facendo un conto di quante cifre ha il tuo 
numero... io credo che sia l'unica soluzione

 Sapete dirmi che istruzione posso usare con mysql?
CREATE TABLE aaaa (
  id mediumint(3) unsigned zerofill NOT NULL auto_increment,
  PRIMARY KEY  (id)
) TYPE=MyISAM;
In pratica è zerofill che completa la lunghezza del campo antemponendo gli
zeri necessari.

   id mediumint(3) unsigned zerofill NOT NULL auto_increment,
--------^^^
Ovviamente puoi accontentarti di un int in un caso come questo.
Ho creato l'esempio al volo con phpmyadmin e non sono stato lě a guardare le
finezze :))

si ma smallint č forzato a 6
mediumint a 9 e int a 11
non puoi forzarlo a 3, per fare una cosa del genere dovresti creare un 
campo decimal(3) che perň nn funziona con auto_increment
correggimi se sbaglio, mi interessa sta cosa

 correggimi se sbaglio, mi interessa sta cosa
Non puoi forzarlo a 3 nel senso che se inserisci 1564 lui ti mostra 1564 e
non 564 (o 156?..boh...)... se però lo fissi a 3 e lo setti con zerofill ti
visualizza correttamente i valori  001..002...003 etc fino  a 999
Se uno organizza la tabella in questo modo è ovvio che dovrà avere
l'accortezza di verificare in qualche modo che non si vada oltre il 999
facendo le opportune verifiche via php e stabilendo a priori che non si vada
oltre 999 immissioni in quella tabella (essendo un campo autoincrementante
mi riferisco ad immissioni storiche.. non a quelle reali presenti nella
tabella. Però dipende come uno la usa.. che ne so.. magari uno elimina e
rimette il campo ogni tre giorni).

 ha scritto nel messaggio
news:_FxW8.12376$K_4.3...@twister1.libero.it...

in pratica devo farmi una funzione php che verifichi il raggiungimento del
valore limite ad es. 999 per valori di tipo 001, giusto?
Raggiunto quel limite posso far ripartire l'autoincremento dal valore 1000?
Grazie.

 Raggiunto quel limite posso far ripartire l'autoincremento dal valore
1000?
Per la verità se raggiunge 999 il successivo sarà già 1000 perchè a quel
punto se ne sbatte della tua limitazione a 3 (che poi limitazione non è..
serve solo ad obbligare il campo ad aggiungere gli zeri a sinistra).
Ma perchè non fai un po' di prove ad esempio con PhpMyAdmin così vedi come
lavora?
Provi a mettere valori tipo.. 1.. 10.. 100.. 1000... 10000 e vedi che ti
darà... 001 010 100 1000 10000
Se vuoi un lavoro di questo tipo non vedo il motivo di controllare via php
il raggiungimento di 999.. se non hai la necessità di tenerti 3 cifre
(ovvero restare compreso fra 001 e 999) a quel punto non ti serve un
controllo come ti ho suggerito prima.

 ha scritto nel messaggio
news:w9AW8.14946$7N3.3...@twister2.libero.it...

ora mi sono chiarito le idee grazie. In effetti quello che volevo ottenere
non era molto logico....
Un saluto.