ID autoincrement

Hallo,

wahrscheinlich ist es eine ganz simple Frage:

Folgende Tabelle: id, name

Immer wenn über ein php-Formular auf meiner Webseite ein neuer
Datensatz hinzugefügt wird, wird automatisch eine ID vergeben. Nun
habe ich aber zwischendurch einige Datensätze gelöscht und die
vergebenen IDs sehen etwa so aus: 1,2,3,12,50,53,…

Was muss ich tun, damit die IDs wieder „ordentlich“ der Reihe nach
(1,2,3,4,5,6,…)vergeben werden.

Danke für Eure Hilfe!!!

Steffi

Lücken in der Schlüsselfolge
Moin, Steffi,

Was muss ich tun, damit die IDs wieder „ordentlich“ der Reihe
nach
(1,2,3,4,5,6,…)vergeben werden.

erstmal: Die Nummernvergabe lässt sich nicht beeinflussen, nur die Anzeige, wenn man das unbedingt will. Aber auch das nur für kurze Zeit.

Du kannst die Datenbank reorganisieren, zu deutsch entladen, löschen, neu anlegen, wieder laden. Sinnvoll ist das aber nicht, weil mit jedem Löschen eines Satzes in der Datenbank eine neue Lücke entsteht. Abgesehen davon: Ein Reorg ist kein Zuckerschlecken, zumal wenn Beziehungen zwischen den Tabellen bestehen. Wenn keine Beziehungen existieren, ist das wohl keine Datenbank :wink:

Gruß Ralf

Hallo,

wahrscheinlich ist es eine ganz simple Frage:

Was muss ich tun, damit die IDs wieder „ordentlich“ der Reihe
nach
(1,2,3,4,5,6,…)vergeben werden.

–> Und warum müssen die ID’s „ordentlich“ in der Reihe sein ? Und was willst du machen, wenn diese ID’s in weiteren Tabellen als Fremdschlüssel referenziert werden ? Oder wenn die ID’s in irgenwelchen Report’s schon ausgedruck worden sind ?

OK, OK, ich sehe schon, da hab ich mir das so schön einfach
vorgestellt und nix is…

Mein „Problem“ ist, dass ich eine (für meine Verhältnisse) relativ
große Datenbank mit etwa 5000 Einträgen habe. Da zwischenzeitlich
immermal wieder etwas rausgelöscht wird, habe ich nun IDs mit Werten
von 1 bis 15000 obwohl nur 5000 Datensätze drin sind.

Das mit dem Reorg werde ich mal in Erwägung ziehen, das war genau das
was ich gesucht habe. Ich werde danach mal googeln. DANKESCHÖN!

Viele Grüße

Steffi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Mein „Problem“ ist, dass ich eine (für meine Verhältnisse)
relativ
große Datenbank mit etwa 5000 Einträgen habe. Da
zwischenzeitlich
immermal wieder etwas rausgelöscht wird, habe ich nun IDs mit
Werten
von 1 bis 15000 obwohl nur 5000 Datensätze drin sind.

  • Hallo, möchte doch nochmals nachfragen, WARUM den die ID’s lückenlos vorhanden sein müssen ? Prinzipiell ist so ein Vorgehen, wie der Vorposter beschrieben hat eine schlechte Idee und praktisch in einer „realen“ Appliaktion nicht durchführbar.

Hi Steffi,

Das mit dem Reorg werde ich mal in Erwägung ziehen

denk dran: Keine Maßnahmen am lebenden System! Beim Reorg kann die Datenbank schneller futsch sein als Du papp sagen kannst.

Wozu aber der Aufwand? Lass die ID laufen, wie sie will, Du musst sie doch niemandem zeigen.

Gruß Ralf

Hallo,
das ist eine berechtigte Frage :smile: Es hat mich
irritiert, dass ich eine Datenbank mit 5000 Einträgen
habe aber die neueste ID irgendwo bei 15000 liegt. Ich
hätte gerne immer gewusst, bzw auf meiner Webseite auch
angezeigt, wieviele Datensätze vorhanden sind. Deswegen
schien mir die einfachste Lösung, eine lückenlose ID zu
haben. Das war wohl der falsche Ansatz…

Vielen Dank für die eindringlichen Warnungen. Ich habe
mich ein bischen über das Reorg informiert und lasse
besser die Finger davon, weil es mein „Problem“ nicht
wirklich löst.

Ihr habt mir sehr geholfen, denn ich hätte mich sonst
in dieses „Problem“ zu sehr verrant.

Danke

Steffi

  • Hallo, möchte doch nochmals nachfragen, WARUM den

die ID’s

lückenlos vorhanden sein müssen ? Prinzipiell ist so

ein

Vorgehen, wie der Vorposter beschrieben hat eine

schlechte

Idee und praktisch in einer „realen“ Appliaktion nicht
durchführbar.

Hallo,
das ist eine berechtigte Frage :smile: Es hat mich
irritiert, dass ich eine Datenbank mit 5000 Einträgen
habe aber die neueste ID irgendwo bei 15000 liegt. Ich
hätte gerne immer gewusst, bzw auf meiner Webseite auch
angezeigt, wieviele Datensätze vorhanden sind. Deswegen
schien mir die einfachste Lösung, eine lückenlose ID zu
haben. Das war wohl der falsche Ansatz…

Hallo Steffi,

wenn es dir nur darum geht, die Anzahl der vorhandenen Datensätze anzuzeigen, warum machst du dann nicht einfach einen
SELECT COUNT(*) FROM MyDB ???

Gruß, Robi

Weil ich ein Anfänger bin und nicht weiss wie das geht :wink:

Danke für Deinen Tipp!

Kann ich das dann auch irgendwie auf meiner Webseite anzeigen lassen?

Danke, ich versuche wirklich mein Bestens!

Steffi

Hallo Steffi,

wenn es dir nur darum geht, die Anzahl der vorhandenen
Datensätze anzuzeigen, warum machst du dann nicht einfach
einen
SELECT COUNT(*) FROM MyDB ???

Gruß, Robi

Hi,

Weil ich ein Anfänger bin und nicht weiss wie das geht :wink:
Kann ich das dann auch irgendwie auf meiner Webseite anzeigen
lassen?

http://de2.php.net/manual/de/function.mysql-num-rows…
Gruß.Timo

Weil ich ein Anfänger bin und nicht weiss wie das geht :wink:

Danke für Deinen Tipp!

Kann ich das dann auch irgendwie auf meiner Webseite anzeigen
lassen?

Anfänger waren/sind wir alle einmal! :smile:

Nun, aber auch als Anfänger weißt du doch sicher, wie das Ergebnis einer DB-Abfrage ausgegeben wird???

Beispielsweise so:

$result = mysql_query(„SELECT COUNT(*) FROM MyDB“);
$Anz_Entry = mysql_result($result,0);
echo $Anz_Entry;

Mit COUNT(*) erhältst du als Ergebnis der Abfrage die Anzahl aller DB-Einträge.

Natürlich kannst du auch ein „SELECT * FROM MyDB“ machen, dann bekommst du mit „mysql_num_rows($result)“ das gleiche Ergebnis, allerdings mit dem Unterschied, dass dann auch alle DB-Einträge ausgelesen werden. Und das muss in diesem Fall ja nicht sein, oder?

Gruß, Robi

$result = mysql_query(„SELECT COUNT(*) FROM MyDB“);
$Anz_Entry = mysql_result($result,0);
echo $Anz_Entry;

Mit COUNT(*) erhältst du als Ergebnis der Abfrage die Anzahl
aller DB-Einträge.

  • Ich bin zwar ein Oracle - Mensch und kenne MySQL nicht wirklich, aber müsste es nicht heissen

$result = mysql_query(„SELECT COUNT(*) FROM MyTabelle“);

-Also nicht Anzahl der Datensätze in der DB sondern in der Tabelle ?

Meinte ich ja eigentlich, aber du hast ja recht, wenn schon einen Tipp für einen Anfänger, dann sollte er auch korrekt sein, hat ja nicht jede® eine Glaskugel.

Also bitte für „DB“ immer „Tabelle“ einsetzen.

Danke für die Korrektur!

Robi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Bingo! Vielen, vielen Dank! Werd ich nachher gleich ausprobieren.

Danke für Eure Tipps und Hilfe!!!

Steffi

http://de2.php.net/manual/de/function.mysql-num-rows…
Gruß.Timo