Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Как узнать ID записи? (Nise) 19/02/2003 - 11:30:48
      Re: Как узнать ID записи? (dannis) 19/02/2003 - 12:16:54
      Re: Как узнать ID записи? (Dinky) 19/02/2003 - 18:23:53
      Re: Как узнать ID записи? (walrus) 19/02/2003 - 23:53:27
      Re: Как узнать ID записи? (vi.k) 20/02/2003 - 17:49:00
      Re: Как узнать ID записи? (Dinky) 20/02/2003 - 18:47:31
      Re: Как узнать ID записи? (vi.k) 20/02/2003 - 20:29:39
      Re: Как узнать ID записи? (Dinky) 21/02/2003 - 19:15:17
      Re: Как узнать ID записи? (vi.k) 21/02/2003 - 21:28:31
      Re: Как узнать ID записи? (Dinky) 21/02/2003 - 21:47:19

> Original message text:
> From: Nise - 19/02/2003 - 11:30:48
> Subject:Как узнать ID записи?
> -----------------
> Очень часто при вставке новой записи нужно прописывать ссылки на нее в другие таблицы. Но как узнать номер только что вставленой записи. я обычно делаю так:
>
> INSERT INTO table_1 VALUES ("something");
> $rec_id = SELECT MAX(ID) FROM table_1;
> INSERT INTO table_2 VALUES ($rec_id);
>
> Конечно здесь для простоты только SQL. У нас две таблицы: table_1 в которую мы вставляем новую запись (два поля: ID auto_increment и value) и table_2 (в нее вставляем ссылку на новую запись)
> Смысл написаного такой: вставляем запись, и считаем что она последняя, таким образом вставляем в table_2 индекс последней вставленой записи.
> Но вполне вероятна такая ситуация что между первым (INSERT) и вторым (SELECT) запросом другой процесс успеет вставить еще одну новую запись. В итоге две записи в table_2 будут ссылаться на одну и ту же запись, а одна запись в table_1 будет как бы потеряной.
> Как выйти из этой ситуации??? MySQL не поддерживает ни хранимых процедур, ни подзапросов, ни блокировок...
>


From: Dinky - 21/02/2003 - 19:15:17
Subject:Как узнать ID записи?
-----------------
пробовал :-P
Если просто запросить автоинкрементное ID, то вернет _следующее_ значение, если как у тебя - select ID from table_1 where ID is NULL - ничего не возращает.

НО, надо ж цитировать полностью:

For the benefit of some ODBC applications (at least Delphi and Access), the following query can be used to find a newly inserted row:
SELECT * FROM tbl_name WHERE auto IS NULL;

я не пользуюсь ни Delphi ни Access, а в остальных случаях это работать не будет ;)



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
6885



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |