Mysql id nach Löschung aktualisieren *gelöst*

  • Hi liebe Profis.
    Ich habe per Google + Forensuche nichts passendes gefunden, ich glaube auch darum, weil ich nicht weiss, wonach ich suchen soll. Bin mir aber sicher, nicht der erste mit diesem Problem zu sein.
    Wenn ich einen Eintrag aus einer Datenbank lösche (z. Bsp. den Eintrag eines Gästebuches), hätte ich gerne, dass sich die anderen Einträge entsprechend neu sortieren, also alle Einträge, welche eine höhere id haben, automatisch ihre id um 1 verringern. Gibt es dafür eine Funktion bei mysql oder muss ich mir das selbst schreiben? Ich kenne dafür nur sehr Zeitaufwendige Sachen und wollt deshalb mal nachfragen, obs da nict schon was besseres, schnelleres gibt.
    Danke für Anworten,
    jojo


  • Warum? Es gibt keinen sinnvollen Grund, die ID's neu zu vergeben, da diese ausschließlich der Identifikation dienen. Dabei ist es völlig wurscht, ob es Lücken gibt oder nicht.

  • Zitat von phpfan

    Warum? Es gibt keinen sinnvollen Grund, die ID's neu zu vergeben, da diese ausschließlich der Identifikation dienen. Dabei ist es völlig wurscht, ob es Lücken gibt oder nicht.

    Das Warum: Ich schreibe mir grad zur Übung ein paar Scripte (Gästebuch, Newssystem, nichts aufregendes). Ich möchte dabei erreichen, dass pro seite jeweils nur 10 (oder was auch immer) Einträge angezeigt werden. Mein Ansatz ist, dabei halt die Tabellen auszulesen, mit Limit 10 und dann einen Zeiger setzen und auf der nächsten Seite beim Zeiger wieder anzufangen (wenns bessere Ansätze gibt, her damit). Ich hatte noch die Idee, dafür die IDs zu nutzen, um mit Where zu arbeiten. Das macht halt nur Sinn, wenn es eben keine Lücken in den IDs gibt, da dann, wenn zu viele Einträge gelöscht wurden, nur ein paar wenige oder irgendwann gar keine Einträge mehr auf der ersten Seite stehen.

    Will ja keinem auf die Nerven gehen, aber sind das nicht einfach Fragen, die man sich als (peinlicherweise immer noch) Anfänger stellt?


  • Zitat

    Das macht halt nur Sinn, wenn es eben keine Lücken in den IDs gibt


    Quatsch!

    select dies, das, jenes from tabelle where id > zuletzt_angezeigte_id order by id limit 10

  • Stimmt, ist mir auch inzwischen aufgegangen. :smilie101:
    Ich hatte bisher so überlegt, auf Seite 2 bei id 10 anfangen, Seite 3 bei 20 etc. Wie erwähnt -> Anfänger.
    Ums abzuschliessen: Es gibt also definitv keine von mysql bereitgestellte Funktion, ids zu "säubern", ja?

    Danke an dich, phpfan. Auch wenn man ne Weile braucht, um mit deinem ruppigen Ton klarzukommen.
    Gruß,
    Jojo


  • Nein, es gibt keine Funktion für so eine Aktion, und das aus gutem Grund. Solange man nur eine Tabelle hat, mag das ja vielleicht noch nett sein, mehr aber auch nicht. Spätestens dann, wenn du aber über die ID Querverweise auf andere Tabellen hast, zerschießt du dir deine Daten.

    Außerdem ist mein Ton nicht "ruppig", "hart aber fair" passt wohl eher.

  • Zitat von phpfan

    Nein, es gibt keine Funktion für so eine Aktion, und das aus gutem Grund. Solange man nur eine Tabelle hat, mag das ja vielleicht noch nett sein, mehr aber auch nicht. Spätestens dann, wenn du aber über die ID Querverweise auf andere Tabellen hast, zerschießt du dir deine Daten.


    Hast natürlich recht. Muss mir angewöhnen, weiter zu denken.

    Zitat von phpfan


    Außerdem ist mein Ton nicht "ruppig", "hart aber fair" passt wohl eher.


    Du solltest nicht vergessen, das man hier nur den Text hat, um jemand anderen einschätzen zu können. Es kann nun mal nicht jeder ein (z. Bsp.) "Quatsch, du Anfänger, denk anders/weiter" von einem "Quatsch, du Dummkopf" unterscheiden, wenn man nur "Quatsch!" liest. Aber ich will das nicht zum Streit ausbreiten. Soll sich ja keiner hier verbiegen.