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 
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]
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
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
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 
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 
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 
Danke für Deinen Tipp!
Kann ich das dann auch irgendwie auf meiner Webseite anzeigen
lassen?
Anfänger waren/sind wir alle einmal! 
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