kostenloser Webspace werbefrei: lima-city


SQL: ID neu beginnen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.

    Hallo,
    ich hab in einer MySQL-Tabelle eine Spalte ID.
    Diese ist INT und hat die Eigenschaften AUTO_INCREMENT und PRIMARY KEY.
    Dabei wird die ID ja immer bei jedem neuen Eintrag um eins erhöht.

    Wenn ich jetzt zB die ganze Tabelle leere und dann einen neuen Eintrag mache, dann läuft die ID aber nicht wieder von 0 an.
    Wie kann ich das mit einem SQL-Befehl machen?

    Versteht ihr was ich meine?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Ja, aber das sollte man so lassen. Datenbanken sollte man immer möglichst relativ haben und wenn du plötzlich eine anderen Eintrag für eine schon vorhandene ID hast, werden andere Tabellen die sich auf die ID beziehen falsch zugeordnet.
  4. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Ja, aber das sollte man so lassen. Datenbanken sollte man immer möglichst relativ haben und wenn du plötzlich eine anderen Eintrag für eine schon vorhandene ID hast, werden andere Tabellen die sich auf die ID beziehen falsch zugeordnet.

    Wieso, in der Tabelle gibts ja nur eine ID-Spalte.
    Und es wird ja sowieso die ganze Tabelle geleert.
    Oder versteh ich da was falsch?

    Die anderen Tabellen haben ja normalerweiße nichts mit der einen zu tun.
  5. t*****b

    Du hast zum Beispiel eine Datenbank mit ein paar Tabellen:

    - User (id, ....)
    - Artikel (id, userid, ...)

    Indem du bei Artikel die ID des Users speicherst, der den Artikel verfasst hat (userid), kannst du dem Artikel den User zuordnen und auf der Webseite ausgeben. Gehst du nun her und änderst/löscht/leerst die User, dann stimmen die Verknüpfung nicht mehr, welcher User welchen Artikel geschrieben hat. Darum fängt auto_increment beim leeren der Tabelle nicht bei Null an, da der neue User mit der ID 1 nicht den Artikel mit der userid = 1 geschrieben hat. Verstanden?
  6. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Du hast zum Beispiel eine Datenbank mit ein paar Tabellen:

    - User (id, ....)
    - Artikel (id, userid, ...)

    Indem du bei Artikel die ID des Users speicherst, der den Artikel verfasst hat (userid), kannst du dem Artikel den User zuordnen und auf der Webseite ausgeben. Gehst du nun her und änderst/löscht/leerst die User, dann stimmen die Verknüpfung nicht mehr, welcher User welchen Artikel geschrieben hat. Darum fängt auto_increment beim leeren der Tabelle nicht bei Null an, da der neue User mit der ID 1 nicht den Artikel mit der userid = 1 geschrieben hat. Verstanden?

    Hmm, also wenn ich jetzt zB die Artikel-Tabelle leere, dann sind die Verknüpfungen zu den Usern ja sowieso weg.
    Und wenn sich die ID bei Artikel ändert dann stört das ja nicht die \"Userzuweisung\".

    Ansonsten hab ichs nicht verstanden. ;)
  7. p**i

    Ach lass Ihn doch true *g* Wenn er es so machen will.
    Klar ist es nicht wirklich produktiv, aber selbst ich nutze diese Möglichkeit *hust*
    Zum Glück habe ich meine speziellen Gründe...

    Zu Deiner eigentlichen Vorgehensweise sollte Dir ALTER TABLE helfen. Musst Du mal in die Doku schauen.

    Da ich leider nur mit HSQLDB arbeite und nicht weiß, ob die Befehle dieselben sind,
    kann ich Dir jetzt kein Beispiel darlegen.

    Gruß,
    Puni
  8. Hey,

    mit dem SQL Befehl \"TRUNCATE TABLE ##Table##;\" wird der Tabelleninhalt gelöscht und der Autoindex wieder auf 1 zurück gesetzt ;-)

    ##Table## ist dabei der Tabellenname.

    Viel Spaß.


    Beitrag geändert: 26.2.2008 11:25:53 von scout
  9. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Hey,

    mit dem SQL Befehl \"TRUNCATE TABLE ##Table##;\" wird der Tabelleninhalt gelöscht und der Autoindex wieder auf 1 zurück gesetzt ;-)

    ##Table## ist dabei der Tabellenname.

    Viel Spaß.


    Beitrag geändert: 26.2.2008 11:25:53 von scout

    Danke, hoffe das funktioniert.
    Wills jetzt nicht testen, sonst ist ja meine Tabelle leer. :blah:
    Ne werds noch testen.



    Beitrag geändert: 26.2.2008 19:23:54 von philippkern
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!