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?
In reply to Perl msyql last_insert_id works once? by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |