Fortlaufende ID

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fortlaufende ID

    hoi,

    wie kann ich bewerkstelligen,dass mein Script eine fortlaufende ID generiert und mit in die Datenbank einträgt?

    Hintergrund:

    Ich erfasse in meinem Admin-Bereich über ein Textfeld in einem Formular einen Begründungstext,der in die Datenbank eingetragen werden soll.

    wie geht das?

    mfg Johny

  • #2
    Re: Fortlaufende ID

    wie kann ich bewerkstelligen,dass mein Script eine fortlaufende ID generiert und mit in die Datenbank einträgt?
    lass die db die id generieren, indem du eine spalte mit AUTO INCREMENT versiehst ...
    Die Zeit hat ihre Kinder längst gefressen

    Comment


    • #3
      muss die id dann beim INSERT-Befehl nicht mehr berücksichtigt werden?

      Comment


      • #4
        hmm,

        im zweifelsfalle: ja!
        Die Zeit hat ihre Kinder längst gefressen

        Comment


        • #5
          du kannst dir auch die tabelle sortiert nach der id ausgeben lassen. die letzte zeile nehmen und dann id++;
          ist zwar ein bißchen umständlicher, geht aber auch.

          Comment


          • #6
            hmm,

            oder ruf mich bei jedem eintrag auf meiner 0190er an, ich nenne dir dann immer eine id, .... ist zwar ...

            *scnr
            Die Zeit hat ihre Kinder längst gefressen

            Comment


            • #7
              Original geschrieben von andi_superstar
              du kannst dir auch die tabelle sortiert nach der id ausgeben lassen. die letzte zeile nehmen und dann id++;
              ist zwar ein bißchen umständlicher, geht aber auch.
              was machst Du wenn z.B. der letzte Eintrag gelöscht wird?
              Der nächste Eintrag erhalt dann quasi die ID des alten Eintrags.
              Das ist nicht eindeutig, nimm wie schon gesagt AUTO_INCREMENT, dann macht MySQL das ganze von alleine. Außerdem sparst Du Dir dann eine unnötige DB-Abfrage.
              [Test] MySQL cli Emulator

              Comment


              • #8
                ich hatte mit dem auto incremental mal das problem als ich sagen wir mal id 1 bis 44 hatte.
                die zeile mit id 8 wurde gelöscht.
                nun bekam die nächste zeile die neu in die tabelle eingefügt wurde id = 8.
                was aber wenn ich dass nicht will sondern dass er bei 44 weiter macht ??
                p.s. dass die abfrage sort by id umständlich ist, weiß ich selber. aber theoretisch funktionirt es schon!

                Comment


                • #9
                  Original geschrieben von andi_superstar
                  ich hatte mit dem auto incremental mal das problem als ich sagen wir mal id 1 bis 44 hatte.
                  die zeile mit id 8 wurde gelöscht.
                  nun bekam die nächste zeile die neu in die tabelle eingefügt wurde id = 8.
                  was aber wenn ich dass nicht will sondern dass er bei 44 weiter macht ??
                  p.s. dass die abfrage sort by id umständlich ist, weiß ich selber. aber theoretisch funktionirt es schon!
                  das kann eigentlich sein! Welches DBMS?
                  Vielleicht war es ein Bug

                  Normalerweise ist das nicht möglich, intern für die Tabelle wird der nächste Wert immer hinterlegt so dass sowas nicht passieren kann, dann wäre AUTO INCREMENT ja auch sinnlos
                  [Test] MySQL cli Emulator

                  Comment


                  • #10
                    MySQL eine 3er Version

                    Comment


                    • #11
                      komischerweise kann man sich auf AUTOINC nicht verlassen wenn man Datensätze löscht. Hatte das eigendtlich bei jeder mySQL Version, das der dann beim nächsten Eintrag immer mal was dazwischen schob, auch wenn Auto_increment z.B. auf 60 steht, wurde der Datensatz mit ID 35 erzeugt. Aber auch nicht immer.

                      Hab mich damit aber auch net weiter beschäftigen müssen, da ichselbst nur eindeutige ID's brauch.

                      Ich vermute das mySQL den auto_increment Wert nur ermittelt wenn es läuft und dann dort auch brav verwendet. Bei einem Restart des servers (also ink. MySQL) ist dieser Wert dann eventuell einfach der nächste Freie ID Wert den MySQL findet.

                      Müsste man mal beobachten.

                      Comment


                      • #12
                        Ich vermute das mySQL den auto_increment Wert nur ermittelt wenn es läuft und dann dort auch brav verwendet. Bei einem Restart des servers (also ink. MySQL) ist dieser Wert dann eventuell einfach der nächste Freie ID Wert den MySQL findet.
                        das ist nicht richtig, schaue mal bei z.B. PMA rein, "Nächste Autoindex", bei mir war der bisher immer korrekt, sowohl auf Linux als auch Windows.

                        Also muß es ja in den tabellenname.(frm|myd|myi) gespeichert werden, wo genau weiß ich auch nicht, tippe mal auf *.frm

                        EDIT:
                        vielleicht doch eher die *.myd
                        Last edited by NielsRunge; 17-09-2004, 15:29.
                        [Test] MySQL cli Emulator

                        Comment


                        • #13
                          Original geschrieben von NielsRunge
                          das ist nicht richtig, schaue mal bei z.B. PMA rein, "Nächste Autoindex", bei mir war der bisher immer korrekt, sowohl auf Linux als auch Windows.

                          Also muß es ja in den tabellenname.(frm|myd|myi) gespeichert werden, wo genau weiß ich auch nicht, tippe mal auf *.frm

                          EDIT:
                          vielleicht doch eher die *.myd
                          Das ist doch der Auto_increment Wert den du auch selbst mit SHOW TABLE STATUS FROM XYZ abfragen kannst (oder ? denk mal PMA macht auch nix anderes). Ich müsst jetzt meinen Rechner runterfahren um das zu prüfen, aber auch wenn ich falsch lieg, mit meiner Vermutung (und ich stocher ehrlich im Nebel), so hab ich die erfahrung mit den eingefügten Datensätzen definitiv gemacht.Welchen Wert dabei auto_increment grad hatte hab ich nie überprüft
                          denn wie gesagt benutz ich die autoincs auch ausschließlich als uniqe-ID's und nicht für reihenfolgen. Darum gabs bislang nurn Schulterzucken ohne weiter drüber nachzudenken.

                          eventuell liegts aber auch daran, das ich bei INSERT die Autins nicht berücksichtige(also nichtmal nen NULL). K.A. ob MySQL das dann als "dem isses also eh egal" Interpretiert

                          Comment


                          • #14
                            ja, PMA macht nichts anderes. Irgendwo kommen die Infos ja her

                            denn wie gesagt benutz ich die autoincs auch ausschließlich als uniqe-ID's und nicht für reihenfolgen.
                            ja, dafür sind die auch gedacht
                            Die Reihenfolge sollte über ein Extra Feld organisiert werden, bzw. der höchste Wert ist dann natürlich der neueste.

                            eventuell liegts aber auch daran, das ich bei INSERT die Autins nicht berücksichtige(also nichtmal nen NULL). K.A. ob MySQL das dann als "dem isses also eh egal" Interpretiert
                            sollte kein Problem sein, es müßte trotzdem der richtige Wert eingesetzt werden, ka.

                            Hast Du das nur bei Dir Lokal oder auch auf Deinem Server bemerken können?
                            [Test] MySQL cli Emulator

                            Comment


                            • #15
                              Hast Du das nur bei Dir Lokal oder auch auf Deinem Server bemerken können?
                              Nur Lokal beobachtet, aber k.A. obs auf dem Server auch so ist denn für mich isses ja kein problem da ich für reihenfolgen sowieso andere werte nutz. Darum war mir das bislang auch keine Nachforschungen weiter Wert.

                              Comment

                              Working...
                              X