moki: AUTO_INCREMENT

Hi.

Bin ein absoluter Anfänger in Sachen Datenbanken.

Mein Problem:
Ich habe ein von mir ungewünschte Eigenschaft von AUTO_INCREMENT entdeckt. In meinem Skript werden (oder besser: wurden) Alle Felder, bis auf das AUTO_INCREMENT-Feld und Primärschlüssel-Feld "ID" gefüllt. Dabei sollte das Feld "ID" automatisch mit Zahlen gefüllt werden. Das klappt auch. Doch beim Löschen eines Datensatzes rücken die Zahlen nicht auf, es entsteht eine Lücke. Also da heißt es dann (vertikal gelesen) 1,2,4,5,6...

Außerdem, wenn man alle Datensätze löscht, dann fängt der neue Wert bei dem Wert, der als letztes auf "ID" lag.

Wie kann ich das beides verhindern?

euer moki

  1. Hi moki

    Wie kann ich das beides verhindern?

    Ersteres gar nicht, beim zweiten kannst du den Counter bei manchen DBMS zurücksetzen.

    Gruss Daniela

  2. Hallo moki,

    [...] Doch beim Löschen eines Datensatzes rücken die Zahlen nicht auf, es entsteht eine Lücke.

    php-faq, 16.16.: Meine IDs haben Lücken - wie vergebe ich sie neu?

    Außerdem, wenn man alle Datensätze löscht, dann fängt der neue Wert bei dem Wert, der als letztes auf "ID" lag.

    Ein »[link:http://dev.mysql.com/doc/mysql/de/truncate.html@title=TRUNCATE] TABLE tabelle« sollte helfen.

    Grüße aus Nürnberg
    Tobias

  3. Hi,

    In meinem Skript werden (oder besser: wurden) Alle Felder, bis auf das AUTO_INCREMENT-Feld und Primärschlüssel-Feld "ID" gefüllt.

    das auto_increment-Feld _ist_ das Primärschlüssel-Feld.

    Doch beim Löschen eines Datensatzes rücken die Zahlen nicht auf, es entsteht eine Lücke.

    Es wäre auch extrem kritisch, wenn sich bei einem Primary Key etwas verändern würde.

    Also da heißt es dann (vertikal gelesen) 1,2,4,5,6...

    Natürlich. Die Werte haben nur und ausschließlich den Zweck, einen Datensatz eindeutig zu bezeichnen und somit eine Identifikation zu ermöglichen. _Jede_ andere Verwendung ist ein Fehler. Insbesondere jede, die sich irgendwie für den expliziten Wert interessiert. Eine auto_increment-Spalte könnte die DNA-Codes von Menschen beinhalten anstatt von Zahlen, das wäre völlig egal - die Eindeutigkeit ist gewährleistet, also sind 100% aller Kriterien der Werte erfüllt.

    Wie kann ich das beides verhindern?

    Das _darf_ nicht verhindert werden können.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes