Автор Тема: LAST_INSERT_ID() :: DBI  (Прочитано 3519 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID() :: DBI
« : 11 Декабря 2006, 18:38:42 »
таблица поле id auto_incriment

пытаюсь узнать id последнего добавленого элемента

   my $query = $Mysql::dbh->prepare("SELECT LAST_INSERT_ID(id) FROM pages_mod");

   $query->execute();
   $id = $query->fetchrow_arrayref()->
  • ;

   $query->finish();

почему то всегда выдаёт id первого добавленого элемента

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID() :: DBI
« Ответ #1 : 11 Декабря 2006, 18:54:32 »
честно я еще не юзал это, просто по аналогии должно быть что то вроде такого

$dbh->last_insert_id()

#last_insert_id
#  $rv = $dbh->last_insert_id($catalog, $schema, $table, $field);
#  $rv = $dbh->last_insert_id($catalog, $schema, $table, $field, \\%attr);
#Returns a value \'identifying\' the row just inserted, if possible. Typically
#this would be a value assigned by the database server to a column
#with an auto_increment or serial type. Returns undef if the driver
#does not support the method or can\'t determine the value.

и вместо dbh->prepare()
$query->execute();

здесь используется ->do()
убили кенни, сволочи

Оффлайн ctax

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID() :: DBI
« Ответ #2 : 12 Декабря 2006, 08:44:37 »
print $dbh->selectrow_array("select id from table order by 1 desc limit 1");

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID() :: DBI
« Ответ #3 : 13 Декабря 2006, 14:26:04 »
Цитировать
ctax:
print $dbh->selectrow_array("select id from table order by 1 desc limit 1");

Может давать ошибку, База данных предполагает множество одновременных конектов и если паралельный коннект будет одновременно производить инсерт в эту таблицу. То есть вероятность того что запрос на селект может встать в очередь не сразу после своего инсерта, а за несколькими инсертами. Которые будут выполнятся по мере поступления FIFO или в другой последовательности LIFO в общем. есть вероятность в многопользовательской среде получить не свой айди
убили кенни, сволочи

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28