laserbrain: Datensätze irgendwo einfügen oder löschen?

Servus Leute,

also ich habe ein kleines Problem, an dem ich gdanklich scheitere. Ich habe eine Tabelle in mysql, in der Bilder und Seitenzahlen verwaltet werden. Die Seitenzahl ist fortlaufenden und nun sellt sich mir die Frage, wie ich am einfachsten die Seitenzahlen nachrücken lassen kann, wenn ihc mitten drin einen Datensatz lösche, einfüge oder am schlimmsten verschieben will. Wobei löschen und einfügen das Wichtigste wäre. Hat da einer von Euch eine Idee?

  1. Hello,

    na ja, ich HOFFE du hast KEIN auto_increment für die Seitenzahl herangezogen, ansonsten begehst du einen der größten Missbräuche dieser Funktion, der nichts desto trotz leider sehr gängig ist.
    In jedem Fall beschränkt sich deine Operation eigentlich auf zwei einfache Statements, stell dir einfach vor du müsstest es von Hand machen:

    Löschen:

    1. schmeiße die Seite weg
    2. nimm jede nachfolgende, streich die aktuelle Zahl durch und schreib eine niedrigere hin.
      -> DELETE ...
      -> UPDATE tabelle SET seitenzahl = seitenzahl - 1 WHERE seitenzahl > geloeschte_seite

    Einfügen:

    1. Gib jeder Seite eine um eins höhere Zahl
    2. Füge die neue Seite ein

    MfG
    Rouven

    --
    -------------------
    Buy when there's blood running in the street and sell when everyone is pounding at your door, clawing to own your equities  --  Wisdom on Wallstreet
    1. Servus und Danke schön,

      oh nan das klingt einfach zu einfach... auto_increment habe ich natürlich nicht verwendet. Ich bin ja nicht wahnsinnig und gebe sowas wichtiges wie die Nummerieung aus der Hand, wenn es die Hauptfunktion der DB ist.

  2. hi,

    also ich habe ein kleines Problem, an dem ich gdanklich scheitere. Ich habe eine Tabelle in mysql, in der Bilder und Seitenzahlen verwaltet werden. Die Seitenzahl ist fortlaufenden und nun sellt sich mir die Frage, wie ich am einfachsten die Seitenzahlen nachrücken lassen kann, wenn ihc mitten drin einen Datensatz lösche, einfüge oder am schlimmsten verschieben will. Wobei löschen und einfügen das Wichtigste wäre. Hat da einer von Euch eine Idee?

    Versuch mal folgendes:
    UPDATE tab_bilder SET seitenzahl=seitenzahl+1 where seitenzahl >= SEITE_DIE_EINGEFUEGT_WIRD;

    Zum Loeschen dann analog mit -1.

    Und Verschieben ist ja nichts anderes als loeschen und dann wo anders wieder einfuegen.

    mfG,
    steckl

    1. Verschieben ist ja nichts anderes als loeschen und dann wo anders wieder einfuegen

      Das war ein gutes Argument, vielen Dank für den Tipp. Ich denke jetzt komme ich dank eurer beiden Tipps weiter!