automatische id in datenbanken

  • hallo,

    also ich arbeite gerad an einer seite mit datenbank,login etc.

    wenn sich beispielsweise 4 user anmelden,sind ja logischerweise in meiner datenbank vier user gespeicher mit einer entsprechenden id... :wink:

    so nun lösch ich den zweiten user...

    jetzt wollte ich,dass automatisch user drei auf id-nummer 2 rutscht und user vier automatisch auf id-nummer 3

    meine frage ist ob das möglich ist,weil ich hab vorhin zum beispiel alle user gelöscht und dann wieder einen hinzugefügt,der dann als user nummer eins die id 22 hatte...

    wäre echt nett wenn mir da vielleicht jemand helfen könnte,da ich echt ein n00b bin in solchen fällen...

    danke schonmal im voraus für eure mühen

    p.s.: hab ne halbe stunde im forum gesucht und kein beitrag gefunden der mir weiterhilft...

  • Hoi,
    ich verstehe den Sinn des Ganzen nicht.
    Wenn du vier registrierte User hast, dann hast du vier Datensätze. Das heißt aber noch lange nicht, dass die auch die IDs 1-4 haben.

    Warum das?
    Sagen wir mal, dass deine Usertabelle so aussieht.
    userID | username | mail | ...

    Dann ist die Tabelle userID ja der "primary key", der bei jedem INSERT automatisch um eins erhöht wird. So sicherst du ab, dass du jeden User eindeutig identifizieren kannst. Das könntest du alternativ auch über die Spalte "username" machen. Die sollte ja auch zumindest UNIQUE sein, demnach wäre auch hier die Möglichkeit der eindeutigen Identifizierung möglich.

    Warum das ganze blabla?
    Nun, ich will dir nur klarmachen, dass die ID nur ein Mittel zum Zweck ist. Es ist doch völlig egal, ob die Mitglieder nun die userIDs 1,5 und 8 oder 23,26,109 haben.

    Ich persönlich sehe keinerlei Vorteil in einer aufeinanderfolgenden Anordnung!

    Dein Problem lösen kannst du, indem du die Daten ausliest, zwischenspeicherst, die Tabelle zurücksetzt und dann die Daten wieder einspielst.

    Grüße, Ben.

  • is richtig,dass es eigentlich keinen sinn macht,aber da ich ein wenig die ordnung liebe, sieht es einfach rein optisch besser aus :mrgreen: :mrgreen: :mrgreen:

    aber ich hab ja mittlerweile mitgekriegt das man das auch per hand ändern kann...

    aber hätte ja sein können das es für sowas auch irgendwas automatisches gibt...

    :danke2: auf jeden fall für die schnellen antworten

    es sieht halt nur einfach schöner aus wenn alles geordnet ist
    :laola:

    stellt euch doch mal vor bei dieser smilie reihe würde einer fehlen :mrgreen:

  • Zitat von Ben


    Wenn ein User aus der Datenbank gelöscht wird, dann wird aber trotzdem einfach weiter erhöht. Da wird nichts "zurückgerutscht" oder so. :idea:


    Kann man aber machen, in dem man mit mysql_num_rows alle Datensaetze zaehlt und die ID den Wert+1 zuweist

  • man kann auch mit einem mysql-befehl den auto_increment wert zurücksetzen, dann wird der halt neu vergebene (von vorne halt ne ^^)

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • genauso sinnvoll wie die diskussion um das was er möchte und wie der wunsch selbst 0o

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • mir geht es um die ordnung im system...

    wenn man den 1634. user bei 3000 usern löschen will dann wird es schwer die anderen wieder per hand richtig zu verschieben...

    darum gehts mir...

  • is doch latte :P
    dasis keine ordnung sondern verschwendung von ressourcen...

    machn in etwa so:
    $id = 42; //wie auch immer, die zu löschende halt
    $maxid = SELECT MAX(id);
    DELETE FROM table WHERE id = $id;
    UPDATE table SET id = $id WHERE id = '$maxid'

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • SELECT t1.id +1 AS frei
    FROM deine_tabelle t1 LEFT JOIN deine_tabelle t2
    ON t1.id +1 = t2.id
    WHERE t2.id IS NULL
    ORDER BY t1.id
    LIMIT 1;


    das ermittelt die kleinste freie id....