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

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

Оффлайн Light

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID()
« : 14 Марта 2002, 11:49:37 »
Привет!

Я работаю в MySQL version 3.23.41

Мне необходимо получить идентификатор последней вставленной записи в таблицу.
Я делаю следующее:

create table Test(nid int not null primary key auto_increment, nAgentID int);

insert into Test (nAgentID) values (5); -> получаю запись (1,5)

select last_insert_id();

В результате получаю 0. Почему? Что я сделала неправильно?

Светлана

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
LAST_INSERT_ID()
« Ответ #1 : 14 Марта 2002, 12:31:53 »
last_insert_id()
1
:))

Цитировать
В результате получаю 0. Почему? Что я сделала неправильно?

Читаем доку:

     The last ID that was generated is maintained in the server on a
     per-connection basis.  It will not be changed by another client.

Делаем логический вывод: SQL запросы выполнялись не в одной сессии(соединении) с сервером.
2B OR NOT 2B = FF

Оффлайн Light

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID()
« Ответ #2 : 14 Марта 2002, 13:19:56 »
Цитировать
Делаем логический вывод: SQL запросы выполнялись не в одной сессии(соединении) с сервером.


Может, я не очень понимаю, что же тогда такое сессия?

Я сейчас сделала следующее:

1. insert into a values(null,87) -> результат (1,87)
2. insert into a values(null,last_insert_ID()) -> результат (2,1)

А потом:
1. insert into a values(null,87) -> результат (3,87)
2. select last_insert_id() -> результат 0.

И что же это получается? В первом случае оба запроса выполнились в одной сессии, а во втором в разных?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
LAST_INSERT_ID()
« Ответ #3 : 14 Марта 2002, 13:27:57 »
Цитировать
И что же это получается? В первом случае оба запроса выполнились в одной сессии, а во втором в разных?

Тогда поподробнее - как идет обращение к MySql.
2B OR NOT 2B = FF

Оффлайн Light

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID()
« Ответ #4 : 14 Марта 2002, 13:36:24 »
Цитировать
Тогда поподробнее - как идет обращение к MySql.


У меня стоит MySQL version 2.23.41 под Линукс
Я работаю в Win\'2K в программе MySQLManager

К базе я обращаюсь через MyODBC version 2.50.39

Что еще интересует?

Запросы пишу в редакторе SQL MyManager\'a

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
LAST_INSERT_ID()
« Ответ #5 : 14 Марта 2002, 14:42:50 »
lock таблица write
после получения результата - анлок
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Light

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
LAST_INSERT_ID()
« Ответ #6 : 14 Марта 2002, 15:01:31 »
Ок, спасибо

 

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