Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3802[/thread]

INSERT in Tabelle Autoincrement gesucht



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Gast Gast
 2007-04-21 15:11
#35393 #35393
Hallo

Es geht darum.

Ich habe eine MYSQL-Tabelle mit mehreren Spalten und Spalte1 ist ein Primary KEy mit Autoincrement.

So jetzt füge ich in die Tabelle mittels DBI und DBD::MYSQL daten ein der form: INSERT INTO tabelle VALUES (NULL,'aaa','AA',....)

und dann halt prepare execute und finish...

Nun dwill ich aber an den Wert der ersten Spalte herankommen, da ich diesen Wert brauche...

Also mach ich noch iene Abfrage:

SELECT MAX(SPALTE1) FROM tabelle WHERE SPALTE2='aaa' ...


Das Problem ist allerdings... Das ist nicht immer 100% eindeutig, da es in der zwishcenzeit unter Umständen andere Einträge gab mit gleichen Daten (außer Spalte1) obwohl die Abfrage direkt danach im Skript kommt...

Nun meine Frage: Gibt es eine Möglcihkeit diesen Wert direkt beim INSERT zu erhalten...

Danke schön für eure Hilfe
renee
 2007-04-21 15:34
#35394 #35394
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nicht dass ich wüsste...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ronnie
 2007-04-21 19:04
#35395 #35395
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Evtl. via my $insertid = $dbh->{'mysql_insertid'};, siehe CPAN:DBD::MySQL.
pq
 2007-04-21 20:14
#35396 #35396
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
auf jeden fall mit $sth->mysql_insertid() oder $dbh->last_insert_id(...) (siehe doku).
wenn das nicht moeglich waere, ware man ja ziemlich aufgeschmissen.
man fuegt was in die db ein, aber weiss nicht, wo.\n\n

<!--EDIT|pq|1177172270-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2007-04-21 20:15
#35397 #35397
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=Ronnie,21.04.2007, 17:04]siehe CPAN:DBD::MySQL.[/quote]
das ding heisst DBD::mysql =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2007-04-22 00:15
#35398 #35398
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aber auch das last_insert_id muss nicht 100%ig stimmen, wie auch in der Doku gesagt wird.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2007-04-22 15:15
#35399 #35399
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=renee,21.04.2007, 22:15]Aber auch das last_insert_id muss nicht 100%ig stimmen, wie auch in der Doku gesagt wird.[/quote]
zeig mir doch mal die stelle in der doku, auf die du anspielst. wir
reden gerade von mysql, ja?

da finde ich
Quote
          * For some drivers the value may only available immediately after the insert
          statement has executed (e.g., mysql, Informix).

damit ist IMHO gemeint, dass du nicht mehrere statements im selben
db-handle ausführen sollst und dann erst die insert_id des ersten
statements holen sollst. also sofort nach dem execute() ausführen
und alles ist gut.
wie machst du denn sowas, wenn du noch nie die last_insert_id benutzt
hast? das ist doch sowas essentielles. das kann man doch sonst nur
mit transaktionen schaffen.\n\n

<!--EDIT|pq|1177240610-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
nepos
 2007-04-22 18:15
#35400 #35400
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nen SELECT hinterherschicken, der als WHERE-Klausel die gerade eingefügten Daten benutzt z.B.
renee
 2007-04-22 18:15
#35401 #35401
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn man es auf das handle bezieht kann es durchaus sein, dass es eindeutig ist.

Ich verwende das nie...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2007-04-22 20:29
#35402 #35402
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=nepos,22.04.2007, 16:15]Nen SELECT hinterherschicken, der als WHERE-Klausel die gerade eingefügten Daten benutzt z.B.[/quote]
das geht ja nicht:
[quote=Alrik,21.04.2007, 13:11]Das Problem ist allerdings... Das ist nicht immer 100% eindeutig, da es in der zwishcenzeit unter Umständen andere Einträge gab mit gleichen Daten (außer Spalte1) obwohl die Abfrage direkt danach im Skript kommt...[/quote]
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-04-21 15:11.