[GELÖST] auto_increment zurücksetzen auf niedrigeren Wert

  • PHP

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Link275.

    [GELÖST] auto_increment zurücksetzen auf niedrigeren Wert

    Hi,

    ist es möglich den auto_increment auf einen niedrigeren Wert zu setzen? Anhand eines Beispiels folgender Aufbau der Tabelle (nur ID):

    ID:
    1
    2
    3
    4
    5
    6
    7
    8

    Jetzt merk ich, dass die letzten 3 Einträge nicht reingehören (6, 7 und 8) und will die löschen. Kein Problem. Nur ist die ID des nächsten Wertes natürlich trotzdem "9". Kann ich das irgendwie / irgendwo zurücksetzen sodass er wieder bei #6 anfängt?


    Link :thumbup:
    Hello World

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Link275“ ()

    indem du Autoincrement auf 1 setzt:

    PHP-Quellcode

    1. <?php
    2. $db_host = "localhost";
    3. $db_user = "root";
    4. $db_pass = "";
    5. $db_name = "test2";
    6. $db_table = "blabla";
    7. mysql_connect($db_host ,$db_user, $db_pass) or DIE(mysql_error());
    8. mysql_select_db($db_name);
    9. $query = "ALTER TABLE ".$db_table." AUTO_INCREMENT =1;";
    10. mysql_query($query) or DIE(mysql_error());
    11. ?>


    gruß,
    Julian
    Hi,

    @xtts02: ja, deine Antwort ist so überflüssig wie sie zu nichts nütze ist, denn ich weiß selbst wofür auto_increment gedacht ist. Was ich suche ist eine Lösung zu oben genanntem Szenario. Es geht mir hier um's Prinzip, wie und ob das gemacht werden könnte, nicht mehr und nicht weniger ;)

    @Devtronic: das habe ich bereits probiert (nicht mit 1, sondern eben mit Wert 6) und es hat leider nicht funktioniert.


    Link :thumbup:
    Hello World
    Hah danke ich war auch schon auf der suche nach sowas! :)

    #OT
    Ich hasse solche Kommentare / wenn jemand sagt dass mans gar nicht erst versuchen soll oder dass es sinnlos ist. Denn: Wenn es mir nicht von nutzen / interesse wäre würde ich doch gar nicht erst fragen? (Bezieht sich auf xtts02's Post)
    Hi,

    gibt glaube ich noch ne andere Möglichkeit. Nochmal zum Verständnis:

    IDs:
    1
    2
    3
    4
    5
    6
    7
    8
    9

    Ich will dass auto_increment wieder bei ID #6 anfängt. Also ID #6 löschen, ID #9 verändern in ID#6 und dann ab #6 alle löschen. Manchmal funktioniert es, manchmal nicht, was weiß ich warum. Irgendwie kann man da manchmal tricksen / das System überlisten, fragt mich aber nicht wieso... wenn man ganz bestimmte Schritte ausführt klappt es ab und zu....


    Link :thumbup:
    Hello World

    BeefyX schrieb:

    Ich hasse solche Kommentare / wenn jemand sagt dass mans gar nicht erst versuchen soll oder dass es sinnlos ist. Denn: Wenn es mir nicht von nutzen / interesse wäre würde ich doch gar nicht erst fragen? (Bezieht sich auf xtts02's Post)



    Wie es schon manchmal vorkommt möchte der Fragende eben sowas realisieren, was aber gegen die Definition ist bzw. hat nicht das Verständnis das man das vlt. ganz anders löst. Wenn man länger mit Datenbanken zu tun hatte, wird man verstehen dass IDs ändern oder Auto_Increment zurück setzten ein sowas von absolute NO GO ist. Denn nicht umsonst ist eine ID eine ID. Meisten haben Datensätze eine ID weil sie noch anderen Zuordnungen unterliegen und Verknüpfungen haben und deswegen wird eine ID in der Tabellenverarbeitung NIEMALS angefasst, das ist einfach ein Fakt.
    Ich weiß nicht was link realisieren sollte, aber es gibt sicher eine optimalere Lösung als an den IDs rum zu pfuschen, wenn ich mal eine forlaufende Zahl in den Datensätzen haben will, dann lege ich mir eine neue Spalte an wo die Zahlen reinkommen, aber das wird nicht mit der ID realisiert.

    Nur deswegen kommen solche Kommentare, nicht um den User zu diskreditieren sondern um ihn auf seine Fehllösung aufmerksam zu machen.

    Vlt. sagt und der TE ja mal was er genau haben möchte und dann können wir ihm wohlmöglich Lösungen anbieten wie man soetwas richtig realisiert.
    Hi,

    @Dodo: ja schön und gut, aber wie gesagt ging es mir lediglich ums Prinzip. Grund ist folgender:
    Wir haben hier eine webbasierte Ticketverwaltung. Wie es rechtlich eben so ist, sollten Arbeitsberichte oder Rechnungen eine fortlaufende Nummer aufweisen. Ich wurde gefragt was wohl ist, wenn man manuell einen Auftrag oder sonstwas löschen möchte und da sage ich "Ja, das ist in der Tat eine gute Frage". Geht das? Und wenn ja, wie. Und wegen dem "ob" und "wie" hab ich hier auch gepostet :)
    Dass es grundsätzlich Pfusch ist und man da nix machen soll, weiß ich natürlich auch.

    Link :thumbup:
    Hello World
    Rechnungsnr und ID sind aber 2 völlig unterschiedliche Sachen, ich habe mir selbst ein CRM geschrieben um meine Rechnungen und Kunden einfacher zu handhaben und da muss ich natürlich auch fortlaufende Rechnungsnummern haben, allerdings löst man dies nicht mit der ID sondern macht sich wie ich schon sagte eine extra Spalte dafür. So könnte ein Datensatz z.B. gerne auch so aussehen

    Quellcode

    1. id rech_nr
    2. 1 1
    3. 2 2
    4. 3 3
    5. 45 4
    6. 546 5
    7. 547 6



    An der Rechnungsnur kann man dann nach belieben rumpfuschen und sie in der Reihenfolge auflisten lassen, aber das macht man eben NICHT über die ID, und das ist was ich meinte, es gibt andere, bessere und vorallem richtigere Lösungen wo man nicht die ID anfässt, denn das tut man nunmal nicht.