mysql nächste auto_increment id herausfinden
Christina
- datenbank
0 Peter Pan0 Christina0 Vinzenz Mai0 Christina0 Rouven0 Vinzenz Mai
0 Vinzenz Mai
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
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
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
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
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
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
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
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
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