php, mysql ID neu durchnummerieren?
Hallo
ich nutzte phpmyadmin und habe mehrere DB.
Diese enthalten immer eine ID welche automatisch fortgesetzt wird.
Nun ist diese teilweise ewig lange und ich möchte sie neu durchnummerieren.
hierzu habe ich diesen Befehl in sql
SET @a = 0;
UPDATE tabellenName SET ID = (@a := @a +1);
ALTER TABLE tabellenName AUTO_INCREMENT = 1;
was wäre die eleganteste möglichkeit in php????
mir fällt da nur eine schleifen lösung ein....
4 Antworten
Wenn du in deinen Datenbanken Tabellen hast, die über diese IDs Datensätze miteinander verknüpfen, dann solltest du die Werte gar nicht ändern. Damit würdest du dafür sorgen, dass diese Verknüpfung zwischen Datensätzen verschiedener Tabellen verloren gehen.
Änderst du die ID eines Datensatzes einer Tabelle, musst du auch sämtliche Datensätze in allen anderen Tabellen ändern, die auf diese ID verweisen. Machst du das nicht, sind deine Tabellendaten inkonsistent und unbrauchbar.
Nun ist diese teilweise ewig lange und ich möchte sie neu durchnummerieren.
Keine gute Idee
Zum einen wird die ID ja nicht kürzer, wenn du alles neu nummerierst.
Zum anderen iat diese eindeitige ja notwendig für alle Verknüpfungen der Daten.
Diese ID zu löschen bzw neu zu nummerieren würde ja bedeuten dass du auch alle Verknüpfungen mit updaten müsstest.
Die Fehlerwahrscheinlichkeit dabei wäre schon nicht zu ignorieren.
Die Datenbank wäre unwiederbringlich verloren.
Das Neu nummerieren hätte auch keinen Vorteil.
Was für einen Vorteil erhoffst du dir von dieser Aktion?
Löschen geht doch nicht auf sie Resoursen.
Dann wird eben der Eintrag gelöscht und das wars
7 Stellung ?
Du meinst die ID ist 7 stellig?
Na und?
ja genau, 7 stellig. ist das nicht sehr ressourcen verbrauchend, wenn ich über 1000 einträge habe, welche alle eine ID mit 7 stellen hat?
2 147 483 647 (oder hexadezimal 7FFF,FFFF16) ist der größte positive Wert, welcher in einem 32-Bit vorzeichenbehafteten Integer gespeichert werden kann
Verstehe nicht ganz.
Was meinst du mit Resoursen Verbrauch
okay. ich dachte das die byte größe der Datenbank größer wird. bspw. wenn ich die db exportiere
Ob die DB beim Exportieren größer wird könnte sein, hat aber doch nichts damit zu tun ob die ID 7stellig oder 4stellig ist
Nun ist diese teilweise ewig lange und ich möchte sie neu durchnummerieren.
das solltest du nicht machen, da IDs konstant eineindeutig sein sollen.
was wäre die eleganteste möglichkeit in php????
Diesen Befehl genau so via PHP an die Datenbank schicken.
$sql = "SET @a = 0;
UPDATE tabellenName SET ID = (@a := @a +1);
ALTER TABLE tabellenName AUTO_INCREMENT = 1;";
$statement = $pdo->prepare($sql);
$statement->execute();
Alex
- php steuern nicht das Autoinkrement der Datenbank
- werden niemals ID der Datenbank neu nummeriert, gelöscht oder erneuert. Die ID muss immer weiterzählen und daran darf auch nichts geändert werden.
Die ID als (PK) ist für den Fremdschlüsselbezug (FK) wichtig.
Sie ist bereits 7 Stellung, da ich jeden 3 Tag knapp über 1000 Einträge lösche... das geht doch irgendwann auf die Ressourcen, oder?