Christina: mysql nächste auto_increment id herausfinden

Hi zusammen,

vielleicht kann mir ja jemand helfen... ;o)

ich hab folgendes SQL-Statement:(mysql)

Struktur:
tabellenname:test
felder:
id int auto_increment,
page_id varchar(255),
name varchar(255)

insert into test (page_id, name) values ('page_id=11', Testseite);

nun ist mein problem, dass die id ja automatisch vergeben wird, da ich sie ja ned festlegen kann, kann ja sein, dass jemand diese dann bereits verbraucht hat und daher ein fehler entsteht...

die id muss aber gleich der 'page_id=11' sein und muss auch fest in der db stehen... (is für Wordpress, bastel da nen plugin ;o) )

kann mir jemand sagen, wie ich das am dümsten mache???

viele grüße, christina

  1. Hi!

    nun ist mein problem, dass die id ja automatisch vergeben wird, da ich sie ja ned festlegen kann, kann ja sein, dass jemand diese dann bereits verbraucht hat und daher ein fehler entsteht...

    Nein das kann nicht sein, denn es ist gerade der Sinn von auto_increment, dem DBMS diese Aufgabe zu übertragen.

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. hi jungs,

      ja, aber dann muss ich ja nachjedem insert den letzten wert nen select absetzen und danach wieder nen update, wenn man nun von knapp 1000 evtl auch auch 10000 einträgen ausgeht, dauert das ned zu lange?

      is zwar nur einmal, aber trotzdem, dachte es gäbe nen performateren weg das gleich beim isert mit rein zu nehmen ... ;o)

      aber auf last... bin ich auch schon gestolpert ;o)

      lg, christina

      1. Hallo,

        ja, aber dann muss ich ja nachjedem insert den letzten wert nen select absetzen und danach wieder nen update, wenn man nun von knapp 1000 evtl auch auch 10000 einträgen ausgeht, dauert das ned zu lange?

        was willst Du uns damit sagen?

        Du kannst selbstverständlich

          
        INSERT  
           ...  
        VALUES  
           ...  
           LAST_INSERT_ID(),  
           ...  
        
        

        verwenden.

        Vielleicht habe ich Dich aber auch völlig falsch verstanden. In diesem Falle wäre es ratsam, Dein Problem präziser zu beschreiben.

        Freundliche Grüße

        Vinzenz

        1. abend ;o)

          jups, genau das meinte ich...

          ich würd gern

          insert into test (page_id, name) values ('page_id='LAST_INSERT_ID(), 'test123');

          machen.

          resultat sollte dann in der test was dieser art

          id='144', page_id='page_id=144', name='test123'

          hab ich da recht?

          lg, christina

          1. Hello,

            hab ich da recht?

            jein. Im Moment produzierst du einen Syntaxfehler, aber nimm noch einen passenden Verkettungsoperator, z.B. CONCAT(), dann kannst du auch das entsprechende Ergebnis erreichen.

            MfG
            Rouven

            --
            -------------------
            sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
            We found ourselves looking upon a familiar sight. We were home. How do you pick up the threads of an old life? How do you go on... when in your heart you begin to understand... there is no going back? There are somethings that time cannot mend... some hurts that go too deep... that have taken hold.  --  The Lord of the Rings: The Return of the King (Peter Jackson)
          2. Hallo,

            ich würd gern

            insert into test (page_id, name) values ('page_id='LAST_INSERT_ID(), 'test123');

            machen.

            resultat sollte dann in der test was dieser art
            id='144', page_id='page_id=144', name='test123'

            erstens käme nicht das Gewünschte heraus, weil LAST_INSERT_ID() den vorhergehenden Autoincrement-Wert liefert, nicht den aktuellen.

            zweitens ist die zweite Spalte hier überflüssig, da sich der Inhalt eindeutig aus dem Inhalt der Spalte id ermitteln läßt. Lass die Spalte einfach weg und Dein Problem erledigt sich von selbst.

            Willst Du aus unerfindlichen Gründen diese Spalte dennoch befüllen, so wäre ein INSERT-Trigger eine Möglichkeit. Ich rate davon ab.

            Freundliche Grüße

            Vinzenz

  2. Hallo Christina,

    insert into test (page_id, name) values ('page_id=11', Testseite);
    kann mir jemand sagen, wie ich das am dümsten mache???

    nein, das kann ich nicht. Es gibt viele dumme Wege, aber welcher der dümmste ist, das weiß ich nicht.

    Schlau hingegen ist es, das Handbuch durchzuarbeiten - und LAST_INSERT_ID() zu entdecken.

    Freundliche Grüße

    Vinzenz

    1. Hi!

      Schlau hingegen ist es, das Handbuch durchzuarbeiten - und LAST_INSERT_ID() zu entdecken.

      Ja da stimme ich zu!

      Schweigend erkenne ich zudem, dass ich Christinas Frage offensichtlich falsch verstanden habe:((

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)