Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wird MySQL gelöschte IDs wiederverwenden, wenn Auto Increment angewendet wird

InnoDB setzt das Feld auto_increment zurück, wenn Sie die Datenbank neu starten.

Wenn InnoDB neu startet, findet es den höchsten Wert in der Spalte und beginnt dann von dort.

Dies wird in MyISAM nicht passieren, da es die letzte inkrementierte ID zwischenspeichert.

Aktualisieren

Dieses Feature/Bug gibt es seit 2003 und kann zu ernsthaften Problemen führen. Nehmen Sie das folgende Beispiel,

  1. Tabelle t1 hat einen Autoinc-Primärschlüssel.

  2. Tabelle t2 hat eine Spalte für den Primärschlüssel in t1 ohne eine Fremdschlüssel-"Einschränkung". Mit anderen Worten, wenn eine Zeile in t1 gelöscht wird, sind die entsprechenden Zeilen in t2 verwaist.

  3. Wie wir wissen, kann eine ID beim InnoDB-Neustart kann neu ausgestellt werden. Daher können verwaiste Zeilen in t2 fälschlicherweise mit neuen Zeilen in t1 verknüpft werden.