Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить значение, сгенерированное в auto_increment-поле  
:(
    Опции темы
hawkins
Дата 16.8.2009, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 8.9.2003

Репутация: нет
Всего: нет



Помогите составить insert запрос (или выражение не помню как правильно называется).
Есть две таблицы:

Код

CREATE TABLE albums(
  AlbumID INT (11) NOT NULL AUTO_INCREMENT,    
  AlbumName VARCHAR (50) DEFAULT NULL,
  AlbumDescription TEXT DEFAULT NULL,
  PRIMARY KEY (AlbumID)
)
ENGINE = INNODB
CHARACTER SET cp1251
COLLATE cp1251_general_ci;


CREATE TABLE IF NOT EXISTS photos(
  PhotoID INT (11) NOT NULL AUTO_INCREMENT,
  AlbumID INT (11) DEFAULT NULL,
  PhotoDescription TEXT DEFAULT NULL,
  PhotoName VARCHAR (30) DEFAULT NULL,
  PRIMARY KEY (PhotoID)
)
ENGINE = INNODB
CHARACTER SET cp1251
COLLATE cp1251_general_ci;


Сначала делаю insert в albums:

Код

insert into albums (AlbumName, AlbumDescription) values ('album1','album1 описание');


Далее мне надо сделать много insert в табличку photos, и в поле AlbumId вставлять значение из автоинкрементального поля таблицы albums, полученного после первого insert.  
Как их правильно составить, помогите плиз...


PM MAIL   Вверх
bars80080
Дата 16.8.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



после запроса    insert into albums
делаешь запрос: select last_insert_id();
он тебе вернёт значение, которое ты можешь подставить в AlbumId 
PM MAIL WWW   Вверх
hawkins
Дата 16.8.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 8.9.2003

Репутация: нет
Всего: нет



спасибо. 
Я в онлайн справке тоже нашел уже.
Получился такой sql:

Код

INSERT INTO albums SET albumname = 'album1', albumdescription='description1' ;

SET @a = LAST_INSERT_ID();
INSERT INTO photos SET  albumid = @a, photodescription = 'photodesc1', photoname = 'photo1';
INSERT INTO photos SET  albumid = @a, photodescription = 'photodesc2', photoname = 'photo2';
...


Добавлено через 7 минут
а у меня еще вопрос попутно возник. Допустим в таблице photos есть поле ordering nbgf int. То есть такая таблица:

Код

CREATE TABLE IF NOT EXISTS photos(
  PhotoID INT (11) NOT NULL AUTO_INCREMENT,
  AlbumID INT (11) DEFAULT NULL,
  PhotoDescription TEXT DEFAULT NULL,
  PhotoName VARCHAR (30) DEFAULT NULL,
  Ordering INT (11) DEFAULT 0;
  PRIMARY KEY (PhotoID)
)
ENGINE = INNODB
CHARACTER SET cp1251
COLLATE cp1251_general_ci;


и мне надо при добавлении записи назначять в поле Ordering то же значение что получается в автоинкрементальном поле PhotoId.
Могу я сделать это одним запросом, например так:

INSERT INTO photos SET  albumid = @a, photodescription = 'photodesc1', photoname = 'photo1', ordering=photoid;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.