auto_increment Feld steht beim Löschen des Datensatzes nicht zur Verfügung

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

  • auto_increment Feld steht beim Löschen des Datensatzes nicht zur Verfügung

    Hallöchen,
    ich habe folgendes Problem: In meiner Tabelle habe ich ein Feld "KdNr", das folgende Eigenschaften hat: tinyint(3), UNSIGNED ZEROFILL, not null, auto_increment.
    Wenn ich jetzt einen neuen Datensatz einfüge z.B. mit der ID 1, dann wird das Feld mit 001 gefüllt. Jetzt habe ich drei Datnsätze und der letzte hat die ID 003. Lösche ich den letzten Datensatz nun, dann wird die ID 003 auch gelöscht.
    Füge ich einen Datensatz nun neu ein, dann bekommt er nicht die ID 003, die ja wieder frei sein sollte, sondern die 004.
    Was mache ich falsch? Bitte helft mir.
    Danke
    Mario Heiß
    Mario Heiß IT-Services

  • #2
    Welche Datenbank hast du überhaupt?

    Egal: bei autoincrement gibt's sowas wie einen internen Zähler (bei Oracle speziell in Sequenzen zu definieren) und der wird stetig hochgezählt, d.h. du kannst auch alles löschen per "delete from tabellennamen" und trotzdem geht's bei soundsoviel weiter.
    Wenn du eine fortlaufend Zählung willst und trotzdem hinundwieder was löschen möchtest (wozu ist das eigentlich gut???), dann benutze lieber neben dem autoincrement "ID" noch ein extra Feld als "KdNr" das du selbst hochrechnest. Dafür mußt du allerdings auch immer schauen, was dein letzter Eintrag für ein Wert hat.
    Löschen mitten raus geht deshalb aber immer noch nicht.

    Kommentar


    • #3
      Autoincrement nicht mehr verfügbar nach Löschen

      Hallöchen,
      sorry habe ich ganz vergessen. Meine Datenbank ist eine mySQL-Datenbank!!!!!!!!!!!!!!!!!!!
      vieleb Dank für Deine Antwort. Allerdings habe ich da etwas anderes gelesen. Zitat "PHP 4 + mySQL" (Buch von DataBecker) auf Seite 266 unten:"Das Attribut Auto_Increment bedeutet, daß der Inhalt eines Feldes ... usw. Im Gegensatz zu verschiedenen anderen DBS steht der entsprechende Feldwert beim Löschen des Datensatzes wieder zur Verfügung." Also, dann kann Deine Aussage nicht ganz richtig sein oder die des Autors.
      Ich brauche dies für ein Kundenmanagementsystem, in dem ich jedem Kunden eine Kundennummer zuordne. Sollte mich irgendwann ein Kunde nicht mehr beglücken und zur Konkurrenz gehen, dann möchte ich aber die Kundennummer wieder verfügbar haben für einen neuen Kunden.
      Also ich brauche immer noch Hilfe!
      Vielen Dank
      Grüße Mario

      [Editiert von MHeiss am 22-03-2001 um 18:48]
      Mario Heiß IT-Services

      Kommentar


      • #4
        Es kommt anscheinend auf die MySQL-Version an. Mein WAMP zuhause zählt normal weiter, der LAMP mit MySQL 3.22.25 hier auf der Arbeit nimmt die höchste belegte Nummer +1.

        D.h. wenn aus den Datensätzen 1,2,3,4 die 2 und die 4 gelöscht werden, macht der Server hier beim nächsten Insert mit der 4 weiter, mein heimischer WAMP bei 5.
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Ah, interessant. Das war für mich neu. Ich hatte bis jetzt nur mySQL-Versionen, die weitergezählt haben. Vielleicht gibt's dafür auch ne Einstellungsmöglichkeit. Bei mir ist's nämlich immer so, wenn ich sogar die ganze Tabelle leer putze, dann geht die Zählung trotzdem weiter.

          Egal, aber für diesen beschriebenen Fall kannst du nicht mit autoincrement als kdNr-Feld arbeiten. Wenn du lückenlos immer die Nummern vergeben möchtest, die mal wieder freiwerden. Denke, daß du das bißchen aufwendiger machen mußt und deinen Datenbestand durchforsten mußt und die erste freie ID dir holst. Sonst wüßte ich keine Lösung.

          Kommentar

          Lädt...
          X