Forum Webscript.Ru

Общие => Базы данных => Тема начата: Light от 14 Марта 2002, 11:49:37

Название: LAST_INSERT_ID()
Отправлено: Light от 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. Почему? Что я сделала неправильно?

Светлана
Название: LAST_INSERT_ID()
Отправлено: Chs от 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 запросы выполнялись не в одной сессии(соединении) с сервером.
Название: LAST_INSERT_ID()
Отправлено: Light от 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.

И что же это получается? В первом случае оба запроса выполнились в одной сессии, а во втором в разных?
Название: LAST_INSERT_ID()
Отправлено: Chs от 14 Марта 2002, 13:27:57
Цитировать
И что же это получается? В первом случае оба запроса выполнились в одной сессии, а во втором в разных?

Тогда поподробнее - как идет обращение к MySql.
Название: LAST_INSERT_ID()
Отправлено: Light от 14 Марта 2002, 13:36:24
Цитировать
Тогда поподробнее - как идет обращение к MySql.


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

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

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

Запросы пишу в редакторе SQL MyManager\'a
Название: LAST_INSERT_ID()
Отправлено: AlieN от 14 Марта 2002, 14:42:50
lock таблица write
после получения результата - анлок
Название: LAST_INSERT_ID()
Отправлено: Light от 14 Марта 2002, 15:01:31
Ок, спасибо