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




MySQL.RU - Webboard



Вернуться
Вложенный INSERT и уникальный идентификатор (Трам-Трамыч) 17/07/2009 - 00:25:35
      Re: Вложенный INSERT и уникальный идентификатор (Diter) 17/07/2009 - 05:43:01

> Original message text:
> From: Трам-Трамыч - 17/07/2009 - 00:25:35
> Subject:Вложенный INSERT и уникальный идентификатор
> -----------------
> Есть примерно такая таблица:
>
> CREATE TABLE IF NOT EXISTS `librea`.`user` (
> `id` INT NOT NULL AUTO_INCREMENT ,
> `name` VARCHAR(45) NULL ,
> `surname` VARCHAR(45) NULL ,
> PRIMARY KEY (`id`) )
> ENGINE = INNODB;
>
>
> И многострочный инсерт:
>
> INSERT INTO `user` (`name`, `surname`) VALUES
> ('name 1', 'surname 1');
> ('name 2', 'surname 2');
> ...
> ('name N, 'surname N');
>
>
> Нужно чтобы запрос возвращал сгенерированные при вставке значения поля id, которые использовались бы в другом INSERT-запросе.
> Помогите, пожалуйста.
>


From: Diter - 17/07/2009 - 05:43:01
Subject:Вложенный INSERT и уникальный идентификатор
-----------------
В один запрос, мне кажется, не получится.
1) исполняем многострочный INSERT

2) получаем ID первой вставленной записи:
SELECT LAST_INSERT_ID()

3) получаем ID последней вставленной записи:
SELECT `id` FROM `librea`.`user` ORDER BY `id` LIMIT 1

4) начало и конец - известны. Можно генерировать второй INSERT.

Если используются API другого языка для работы с MySQL, то первые два шага объединяются в один. Например, на PHP:
...
$first_id = mysql_query("INSERT INTO `user` (`name`, `surname`) VALUES ('name 1', 'surname 1'),('name 2', 'surname 2'),('name N, 'surname N')");




For MySQL 5.1.12 and later, LAST_INSERT_ID() (no arguments) returns the first automatically generated value successfully inserted for an AUTO_INCREMENT column...
http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id


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

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

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



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