yo,
Bei
delete from $table
wird der Initialwert des Autoincrement-Keys gar nicht mehr zurückgesetzt (MySQL 4.0.12)
bei mysql begebe ich mich immer ein wenig aufs glatteis. aber grundsätzlich würde ich sagen, ist das kein bug, dass autoincrementwerte durch das löschen von datensätzen mit delete nicht zurück gesetzt werden, sondern eher eine vereinbarung. zwar werden durch den befehl in dieser form alle datensätze gelöscht, aber eben nicht bei jedem delete befehl. man müsste also eine zusätzlich unterscheidung einführen. ein zurücksetzen des autoincrementwertes, ohne dass wirklich alle datensätze gelöscht werden, wäre fatal.
bei oracle würde mir da eine problematiche situation einfallen, bei mysql bin ich mir nicht sicher, ob es auch so ist. ein delete hat im gegensatz zu einem truncate kein auto-commit, sprich die änderung kann zurückgenommen werden. wenn nun aber zur gleichen zeit jemand anderes ein insert machen will, soll das dbms dann den alten autoincrement benutzen oder aber schon den neuen zurückgestzten ?
Mit "Truncate Table" geht es, aber dadurch verliert man das Lock auf den table und damit die Kontrolle über den Zustand.
truncate stellt im gegensatz zu delete sicher, dass wirklich immer alle datensätze einer tabelle gelöscht weden und besitzt zumindestens unter oracle auch ein auto-commit. und das sollte auch eine vorrausetzung sein, damit ein autoincrementwert überhaupt zurückgesetzt werden kann.
MySQL ist also nicht mehr brauchbar!
nah, letztlich hast du ja nun zwei verschiedene möglichkeiten, die datensätze in einer tabelle zu löschen. einmal mit zurücksetzen und einmal ohne. ;-)
Ilja