如何获取使用DBI插入的最后一行?

时间:2009-12-15 11:45:30

标签: perl dbi

如何使用DBIDBD::mysql)获取插入的最后一行?

代码示例:

my $sth = $dbh->prepare('INSERT INTO a ( x, y, z ) VALUES ( ?, ?, ? )');
$sth->execute( $x, $y, $z );

如何访问上述prepare语句插入的数据?我需要获取主ID(AUTOINCREMENT)值。

更新

来自DBD::mysql文档:

  

访问此方法的另一种方法   属性是通过   $dbh->{'mysql_insertid'}

感谢您Mannin0rd的回答。 : - )

3 个答案:

答案 0 :(得分:30)

这是语句句柄的属性。您应该能够像这样访问ID:

$sth->{mysql_insertid}

答案 1 :(得分:27)

数据库不可知的方法是使用DBIlast_insert_id方法。此方法有助于减少对特定数据库的依赖性:

  

$ dbh-> LAST_INSERT_ID

     

$rv = $dbh->last_insert_id($catalog, $schema, $table, $field);

     

返回一个值'标识'刚插入的行,如果可能的话。通常,这是由数据库服务器分配给具有auto_increment或serial类型的列的值。如果驱动程序不支持该方法或者无法确定该值,则返回undef。

答案 2 :(得分:6)

SELECT LAST_INSERT_ID() query也会返回您想要的内容。