Ankündigung

Einklappen
Keine Ankündigung bisher.

auto_increment ohne Lücken

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • auto_increment ohne Lücken

    Hallo,

    ich habe jetzt im MYSQL-Manual rumgelesen, aber ich find nichts passendes.
    Ich habe eine kleine Datenbank mit einer auto_increment-Spalte eine mail-Spalte und eine Datumsspalte. Jetzt habe ich Daten hinzugefügt und gelöscht und das auto_increment hat brav raufgezählt. Durch das Löschen sind aber Lücken entstanden, sodass nach Datensatz 3 - schon 11 kommt.

    Ich hätte aber gerne 1, 2, 3,4 .....

    Bitte Hilfe.

    Michi

  • #2
    Der Vorteil der Lücken ist aber, dass jeder Eintrag eindeutig einer ID zugewiesen werden kann! Auf die ID's kannst du bauen. Ist doch egal, wenn da ein paar Fehlen - oder warum willst du das unbedingt haben?

    Du könntest die Spalte mit der ID löschen und anschließend wieder einfügen, aber ist nicht gerade die tolle Lösung.
    Aufstrebend, kompetent und [b]werbefrei[/b].
    :arrow: [b][url=http://www.developers-guide.net]www.developers-guide.net[/url][/b]

    Kommentar


    • #3
      In meiner User-Tabelle gibt es seit Jahren keine Nr. 1-3 ... ich als Admin bin erst Nr. 4 ...

      Sinn eines ID ist die Identifikation ... das ist nur gewährleistet, wenn die ID sich nicht ändert. Deswegen auch kein neuer Datensatz auf einer gelöschen ID.

      Wenn du des zwingend brauchst (unwahrscheinlich), kannst du die gesamte Spalte löschen und neu anlegen.

      Kommentar


      • #4
        hi, hab auch mal n Frage zur AUTO_INCREMENT,
        hab auch eine kleine Tabelle wo ein AUTO_INCREMENT als ID genutz wird,
        nun habe ich z.B. da 2000 Einträge drin und will paar "alte" die nicht mehr gebraucht werden löschen

        ist es den so wenn ich z.B. einträger von 1-2000 habe und dann die 1-1999 lösche das meine ID dann weiter bei 2001 anfängt oder fängt es wieder bei 1 an ?? was passiert wenn ich alle Einträge lösche, dann fängt es doch bestimmt bei 1 wieder an und nicht bei der letzt höchsten ID vor dem Löschen ??!!

        Danke
        Gruß

        Kommentar


        • #5
          Auto Increment ?

          wie wäre es mit einem Zeitstempel ?

          immer eindeutig,
          keine Lücken,
          Informationen zum Datum & Uhrzeit,

          kann ich nur weiter empfehlen.

          .peter

          Kommentar


          • #6
            Ich vermute mal, dass du eine FOR/WHILE Schleife benutzen möchtest um jede ID abzugehen (ist übrigens recht ineffizient).
            Das solltest du aber nicht über einen Zähler machen, sondern einfach über Pointer auf Ergebnisse eines Queries...


            Btw.: Auto_Increment geht natürlich bei 2001 weiter. (bitte auf den Datentyp der ID achten!)

            Kommentar


            • #7
              Zitat von MadCro
              dann fängt es doch bestimmt bei 1 wieder an und nicht bei der letzt höchsten ID vor dem Löschen ??!!
              Doch! Weil es dann eindeutig ist!
              Aufstrebend, kompetent und [b]werbefrei[/b].
              :arrow: [b][url=http://www.developers-guide.net]www.developers-guide.net[/url][/b]

              Kommentar


              • #8
                hmm ist es denn so ?
                hab da mal eben ausprobiert, hab paar test Daten gelöscht so das kein
                Daten in der Tabelle standen und meine ID fängt wieder bei 1 an ((
                das soll die doch nicht grrr ist ein INT Feld hat das was damit zu tun das ich die Daten per Hand gelöscht habe und dann aber per PHP die neuen wieder rein schreiben lasse ?

                Merkt sich den SQL "intern" die letzte eingetragene ID (INT auto_incremet FELD)
                oder guckt es nur welche die höchste ID ist und macht dann nur ein ID++ ??

                Kommentar


                • #9
                  MySQL merkt sich das.

                  Dein Feld sollte:
                  Primärschlüssel und auto_incremet als Eigenschaften haben!
                  Aufstrebend, kompetent und [b]werbefrei[/b].
                  :arrow: [b][url=http://www.developers-guide.net]www.developers-guide.net[/url][/b]

                  Kommentar


                  • #10
                    Zitat von Guradia
                    In meiner User-Tabelle gibt es seit Jahren keine Nr. 1-3 ... ich als Admin bin erst Nr. 4 ...

                    Sinn eines ID ist die Identifikation ... das ist nur gewährleistet, wenn die ID sich nicht ändert. Deswegen auch kein neuer Datensatz auf einer gelöschen ID.

                    Wenn du des zwingend brauchst (unwahrscheinlich), kannst du die gesamte Spalte löschen und neu anlegen.
                    Gut zwingend brauch ich das jetzt wirklich nicht. Und für den allerersten Start der Datenbank kann ich das ja wirklich mit der Spalte machen.

                    Und irgendwo in den Antworten ist das Wort Timestamp gefallen. Vielen Dank für diesen Hinweis. Habe schon brav nachgelesen und es fiel mir wie Schuppen aus den Haaren!!

                    Michi

                    Kommentar


                    • #11
                      Re: auto_increment ohne Lücken

                      Zitat von knauserercom
                      Durch das Löschen sind aber Lücken entstanden, sodass nach Datensatz 3 - schon 11 kommt.
                      16.16. Meine IDs haben Lücken - wie vergebe ich sie neu?
                      http://www.dclp-faq.de/q/q-sql-ids.html

                      Die IDs einer AUTO_INCREMENT-Spalte haben den Sinn, jede Zeile in der Tabelle, d.h. jeden Datensatz, eindeutig zu kennzeichnen. Durch Löschen von Datensätzen entstehen zwar "Lücken" in der Nummerierung, da für neue Datensätze stets eine unverbrauchte ID vergeben wird. An dieser vermeintlichen "Unordnung" sollte man aber auf keinen Fall etwas ändern - dies würde dem Prinzip der Eindeutigkeit zuwiderlaufen.

                      Kommentar

                      Lädt...
                      X