[MySQL] ID von vorne beginnend

Hallo!

alte News: 10
gelöschte News: 3
zwischenstand: 7 News
neue News: 1
Macht bei mir 8 News @Dennis. ;)

Dass dann aber 11 News gezählt werden, lässt mir den Verdacht aufkommen dass nicht die Zeilen gelöscht wurden, sondern nur deren Inhalt.
Sowas könnte z.b. passieren wenn ein UPDATE-Query gemacht wird und dabei keine Werte mitgeben werden (aus welchen Gründen auch immer ;) ).
Wenn ich mich nicht irre, müssten dann die Einträge nämlich mit den Default-Werten überschrieben werden..... z.b. mit NULL.
Dann dürften allerdings keine Lücken bei den ID's bestehen.
Ich würde die Tabellen mal mit phpMyAdmin überprüfen.

Ich sehe eigentlich auch keinen Sinn die ID's wieder "aufzufüllen".
Wenn Du für die ID's z.b. den Spaltentyp int(10) eingestellt hast, dürftest Du mit den ID's wohl bis an Dein Lebensende auskommen ( 9.999.999.999 ID's). ;)

Gruss Dr Dau
 
Dr Dau hat gesagt.:
Hallo!

alte News: 10
gelöschte News: 3
zwischenstand: 7 News
neue News: 1
Macht bei mir 8 News @Dennis. ;)
Okay, hab nichts gesagt, entschuldige mich dafuer (fuer das nicht gesagte ;) ) und behaupte das Gegenteil (von dem was ich nicht sagte ;) ).
Hab ich doch glatt uebersehen, dass da noch eine geschrieben wurde. Sorry cille, mein Fehler.
Dr Dau hat gesagt.:
Dass dann aber 11 News gezählt werden, lässt mir den Verdacht aufkommen dass nicht die Zeilen gelöscht wurden, sondern nur deren Inhalt.
Entweder das oder aber er geht wirklich von der letzten ID als Anzahl der News aus, was ja meine Vermutung war.
 
Um darauf auch noch einzugehen.....
cille hat gesagt.:
das ist nicht das was ich suche, die Datenbank soll ja von alleine alles ordnen.
Tut sie ja auch.
Jeder neue Eintrag bekommt die nächst höere ID.
Wenn Du nun z.b. die 10 neusten News ausgeben willst und dabei die neuste an oberster Stelle ausgegeben werden soll, brauchst Du nur Deine Abfrage anpassen.....
Code:
SELECT * 
FROM `news` 
ORDER BY `id` DESC 
LIMIT 0,10
Wenn Du nun gelöschte ID's wieder "auffüllen" würdest, könntest Du die News in dieser Form nicht mehr nach ihrer Aktuallität ausgeben.
Dann müsstest Du z.b. den Timestamp speichern..... auch dann wenn Du ihn eigentlich nicht brauchst.
Aber was machst Du wenn z.b. 3 News zeitgleich eingetragen werden (man kann ja nie wissen)?
Dann bekommen diese 3 News den gleichen Timestamp..... und schon hast Du ein Sortierproblem..... eine ID hingegen ist einmalig.
Oder Du vergibst den News eine "Sortiernummer"..... wozu Du (genauso wie auch beim Timestamp) eine extra Spalte brauchst.
 
Matthias Reitinger hat gesagt.:
Hallo,


Also in Verbindung mit MySQL >= 5.0.2 ließe sich da sicher was mit Triggern drehen. Wenn's denn mal wirklich nötig sein sollte (nicht so wie hier :)).

Grüße,
Matthias
Sag ich ja, irgendwas was ich bisher noch nicht gebraucht hab. :D
Aber ich denk in der Regel ist sowas einfach echt nicht noetig. Mir faellt auch kein Beispiel ein wo das sinnvoll waer. Wenn Du grad mal eins auf Lager hast, immer her damit.
 
Man könnte die Datenbank auch ohne ID's exportiren, die Tabellen löschen..... anschliessend die Tabellen neu anlegen, die Datenbank wieder importieren und dabei die ID's per auto_increment neu vergeben lassen.
Nachteil ist natürlich dass während dieser Zeit nicht auf die Datenbank zugegriffen werden darf..... sonst schieben sich neue Einträge irgendwo zwischen die alten. ;)
Je nach Datenbankgrösse ist der Server also u.U. für längere Zeit nicht verfügbar. :p

Selbst wenn man seine Projekte ausgiebig testet und dann zum offiziellen Start nochmal "klar Schiff" machen will, würde ich keinen wirklichen Sinn darin sehen.
Über kurz oder lang würde die Datenbank ja eh wieder genauso aussehen. ;)
 

Neue Beiträge

Zurück