phpbar.de logo

Mailinglisten-Archive

auto_increment "reseten" ?

auto_increment "reseten" ?

André Laugks mysql_(at)_lists.phpcenter.de
Fri, 28 Sep 2001 01:18:50 +0200


Hallo!

Am Freitag, 28. September 2001 00:48 schrieb Pete 'Baldur' Hillebrand:
> ich habe eine Tablle mit einer id-spalte die auto_icrement ist.
> Wenn ich eine Zeile lösche (z.b. 101), und danach eine neue einfügen lasse,
> dann bekommt die nächtste Zeile nicht den höchsten freien Wert, sondern
> einen wert, der noch nicht vergeben wurde (also 102), was ja auch vom
> Prinzip her sinn machen kann.

Das die 102 ausgewählt wird macht Sinn, den genau das sorgt für die 
Integrität Deiner Datenbank/Daten/Datensätze.  Das ganze ist ein Konzept.
 

> Allerdings möchte ich, auch wenn aus der Mitte eine Zeile gelöscht wird,
> dass mit Hilfe von auto_increment die "Lücken gefüllt" werden.

Wozu sollen den die Lücken eingefüllt werden?
Stört Dich eine Lücke von zum Beispiel 100 -> 700? 

Befreie Dich von dem Gedanke, das es in den ID's keine Lücken geben darf, 
weils schöner aussieht. Es ist egal, den jedes Programm sollte so flexibel 
geschrieben sein, daß solche Lücken egal sind. Der Datenbank ist es auf alle 
Fälle egal.


> Könnt ihr mir da einen Fingerzeig geben ?!

Die einzige Lösung ist, die Spalte auszulesen, die höchste ID/Zahl zu 
ermitteln und dann schauen, welche ID/Zahl frei ist. Wenn Du die hast, 
verwendest Du ein Insert und gibst die ID bzw. freie ID mit an. 

Aber sobald Du mal eine relationale Datenbank aufbaust, mit mehr als einer 
Tabelle, wo mehrere Tabellen "zusammen hängen", also Datensätze "von einander 
abhängig sind", kann das ins Auge gehen.


MfG, André Laugks

---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive