Как я могу получить последнюю строку, которую я вставил с помощью DBI?

как я могу получить последнюю строку, которая была вставлена с помощью DBI (ДБР::в MySQL)?

код:

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

как я могу получить доступ к данным, которые были введены выше prepare заявление? Мне нужно получить основной идентификатор (AUTOINCREMENT) значение.

обновление:

С ДБР::в MySQL документы:

альтернативный способ доступа к этому атрибут через $dbh->{'mysql_insertid'}.

спасибо Манни и n0rd за ваши ответы. :-)

3 ответов


Это свойство дескриптора инструкции. Вы должны иметь доступ к идентификатору, как это:

$sth->{mysql_insertid}

подход агностика базе, это использовать DBI ' s last_insert_id метод. Этот подход помогает уменьшить зависимость от конкретной базы данных:

$dbh - >last_insert_id

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

возвращает значение, идентифицирующее только что вставленную строку, если это возможно. Обычно это значение присваивается сервером базы данных столбцу с типом auto_increment или serial. Возвращает undef, если драйвер не поддерживает метод или не может определить значение.


SELECT LAST_INSERT_ID() запрос также вернется то, что вы хотите.