| 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;

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).