Eine ID hat nur den einzigen Zweck, einen Datensatz eindeutig zu identifizieren.
Sie muss nicht „schön aussehen“, deshalb auch nicht fortlaufend sein oder sonstwas.
Mit der Neuvergabe von gelöschten IDs kann man sich arge Probleme einhandeln, wenn Referenzierungen auf diese dann nicht mehr stimmen, etc.
Deshalb sollte man es absolut vermeiden, einer ID irgendeine andere Bedeutung zumessen, oder ihre Vergabe aus „optischen“ Gründen beeinflussen zu wollen.
Wenn man es machen „muss“ - dann macht man etwas ganz gravierend falsch.
Keinen wirklich vernünftigen.
Die Nutzerkommentare im MYSQL empfehlen z.B., die Spalte, auf der auto_increment liegt, zuerst zu DROPpen, und dann mit den gleichen Attributen wieder zu erstellen. Dabei würden aber alle Datensätze neue Werte für die Spalte vergeben bekommen, so dass sehr wahrscheinlich sogar externe Referenzen auf nicht gelöschte Datensätze zerstört würden.
Alternativ kann man auch den Auto-Inkrement-Wert auch für die Tabelle setzen,
ALTER TABLE tabelle AUTO_INCREMENT=1234
Damit wird aber nach meinem Test nur der erste neue Datensatz mit dem nächsten freien Wert angelegt, der nachfolgende dann wieder mit einer ID grösser der aktuellen gesamt-grössten.
ansonsten musste auf auto_increment verzichten und per skript die niedrigste verfügbare ID ermitteln und eintragen - was mit rumprobieren aber wohl ne menge unnötiger aufwand ist
naja, kannst ja immer 10-100 IDs zusammenrechnen und dann die summe checken, dann weißte schonmal ob in dem bereich was frei ist oder nicht