Newsgroup: it.comp.software.database
Titolo: AUTO_INCREMENT

salve a tutto il Ng.
Ho un problema con il campo dichiratto auto_incremet
Il problema e' questo...quando vado a rimuovere un record e poi ripopolo la
tabella il contatore mi salta la cifra che dovrebbe metterci e ne mette una
incrementata della vecchia+1
Spero di essermi spiegato ( anche se mi rendo conto di essere kontorto nell
esporre i quesiti:))
es:
1 record1
2 record 2
3 record 3
cancello 3 record 3
reinserisco un record e non mi rikomincia da 3 ma da 4!
kome posso fuorviare a tutto cio=!
Grazie
Gianluca

kome posso fuorviare a tutto cio=!
E' il solito problema dei campi auto-incrementanti.
In realta', secondo me, e' giusto che faccia cosi'.
L'unica alternativa che io conosca e' quella di gestire a
mano gli auto-incrementi (facendo una select max sul campo
da incrementare o tenendo una tabellina separata con
l'ultimo valore inserito).
Il problema sorge quando si e' in multi-utenza.
--
Andrea Laforgia (mica uno qualunque...)

On Mon, 03 Sep 2001 22:35:05 GMT, 
walkie...@libero.it
 (Andrea
Laforgia) wrote:
Oppure usare MySql
Ciao.


ma in mysql è uguale...o sbaglio?
--
___________________________
ilGiovine - webdesign&co:) (?)
iv...@faronet.it
uin (icq number): 125262043
-------------------------------------------------

ma in mysql č uguale...o sbaglio?
guarda qui sotto ... ciao.
mysql> show columns from prova;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| autoinc | int(11)     |      | PRI | 0       | auto_increment |
| descri  | varchar(32) | YES  |     |         |                |
+---------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> select * from prova;
Empty set (0.00 sec)
mysql> insert into prova (descri) values ('uno');
Query OK, 1 row affected (0.00 sec)
mysql> insert into prova (descri) values ('due');
Query OK, 1 row affected (0.01 sec)
mysql> select * from prova;
+---------+--------+
| autoinc | descri |
+---------+--------+
|       1 | uno    |
|       2 | due    |
+---------+--------+
2 rows in set (0.02 sec)
mysql> delete from prova where descri = 'due';
Query OK, 1 row affected (0.03 sec)
mysql> insert into prova (descri) values ('tre');
Query OK, 1 row affected (0.00 sec)
mysql> select * from prova;
+---------+--------+
| autoinc | descri |
+---------+--------+
|       1 | uno    |
|       2 | tre    |
+---------+--------+
2 rows in set (0.00 sec)
mysql>

ma in mysql č uguale...o sbaglio?
http://www.mysql.com/doc/S/E/SEC438.html
After a database startup, when a user first does an insert to a table
T where an auto-increment column has been defined, and the user does
not provide an explicit value for the column, then InnoDB executes
SELECT MAX(auto-inc-column) FROM T, and assigns that value incremented
by one to the the column and the auto-increment counter of the table.
We say that the auto-increment counter for table T has been
initialized. 

ok ok ci credo:))


>guarda qui sotto ... ciao. [ . . . . ]
Ho però constatato che anche MySQL sul mio pc funziona come dici tu (cioè
non "salta" le cifre nei campi auto-increment quando uno viene cancellato),
mentre sul server del provider a cui mi appoggio no. Non ho mai indagato il
motivo.
Matteo