Bug #350 auto_increment field not reset when doing "DELETE FROM table;"
| Submitted: | 30 Apr 2003 9:26 | Modified: | 30 Apr 2003 9:41 |
|---|---|---|---|
| Reporter: | [ name withheld ] | Email Updates: | |
| Status: | Not a Bug | Impact on me: | |
| Category: | MySQL Server: MyISAM storage engine | Severity: | S3 (Non-critical) |
| Version: | 4.0.12 | OS: | Windows (Windows 2000 Server) |
| Assigned to: | CPU Architecture: | Any |
[30 Apr 2003 9:41]
Alexander Keremidarski
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.mysql.com/documentation/ and the instructions on how to report a bug at http://bugs.mysql.com/how-to-report.php This is well docummented behaviour. auto_increment values must not be reused as it usualy breaks dependencies in database In old releases before 3.23 auto_increment values were reused after DELETE which was proved to lead to many troubles and in 3.23 this behaviour was changed to current - much more consistant one. If one wants to reuse values it is doable with following syntax: ALTER TABLE SET AUTO_INCERMENT=N;
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.038 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: When using "DELETE FROM table;" to clear the entries from a MyISAM table (other table types not tested) with an auto_increment field, the auto_increment counter is not reset to 1. How to repeat: Running mysqld-nt version 4.0.12 (client does not matter, tested using PHPMyAdmin), execute the following queries: DROP TABLE IF EXISTS testtable; CREATE TABLE testtable ( field1 int NOT NULL auto_increment, field2 varchar(5), PRIMARY KEY(field1) ) TYPE=MYISAM; INSERT INTO testtable (field2) VALUES ('one'),('two'); DELETE FROM testtable; INSERT INTO testtable (field2) VALUES ('three'); SELECT field1 FROM testtable WHERE field2='three'; -> returns the value 3 This also occurs in MySQL Max 3.23, but not MySQL Standard 3.23 (the version I was using before I upgraded to 4.0) which returns the expected value of 1. Replace "DELETE FROM testtable;" with "TRUNCATE testtable;" and the last INSERT will behave properly (the SELECT will return the value 1).