Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Hi everyone,
I'm puzzled why Example 1 below where I obtain the last insert id from a single insert works but Example 2 where I try to obtain two last insert ids from two different inserts doesn't:
Example 1:Example 2:$dbh->{RaiseError} = 1; $dbh->begin_work; eval { $dbh->do(qq~INSERT INTO table1 VALUES(?, ?)~, undef, undef, "s +omevalue"); my $last_id = $dbh->last_insert_id(undef, undef, qw(table1 id) +); $dbh->do(qq~INSERT INTO table3 VALUES(?, ?)~, undef, undef, $l +ast_id); }; if ($@) { eval { $dbh->rollback(); }; } $dbh->commit();
$dbh->{RaiseError} = 1; $dbh->begin_work; eval { $dbh->do(qq~INSERT INTO table1 VALUES(?, ?)~, undef, undef, "s +omevalue}); my $last_id = $dbh->last_insert_id(undef, undef, qw(table1 id) +); $dbh->do(qq~INSERT INTO table2 VALUES(?, ?)~, undef, undef, $s +omevalue); my $last_id2 = $dbh->last_insert_id(undef, undef, qw(table2 id +)); $dbh->do(qq~INSERT INTO table3 VALUES(?, ?, ?)~, undef, undef, + $last_id, $last_id2); }; if ($@) { eval { $dbh->rollback(); }; } $dbh->commit();
In Example 1, the mysql transaction is commited but in Example 2, it's rolled backed. Is it possible to obtain more than one last insert id?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Perl msyql last_insert_id works once?
by Corion (Patriarch) on Dec 04, 2015 at 07:25 UTC | |
|
Re: Perl msyql last_insert_id works once?
by Apero (Scribe) on Dec 04, 2015 at 18:33 UTC | |
|
Re: Perl msyql last_insert_id works once?
by Anonymous Monk on Dec 04, 2015 at 07:33 UTC |