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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Insert записей в две таблицы 
V
    Опции темы
dma
Дата 24.1.2007, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.12.2006
Где: Belarus, Minsk

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



Посоветуйте пожалуйста, можно ли как-нибудь более грмотно реальзовать следующую вещь:

Есть две таблицы А и Б.
У таблицы А есть автоинкрементированное поле. При добавлении записи в таблицу А ей присваивается некоторый ID. 
Как, добавляя в таблицу А некую запись узнать какой ей присвоился ID и тут же добавить в таблицу Б какую-то другую запись, и ID записи из таблицы А?
Будет ли корректным с точки зрения оптимальности делать так:
Код

INSERT INTO A smth;
SELECT ID FROM A Where smth;
INSERT INTO Б SMTH2, ID;


Покопавшись в мануале по MySQL (мне для неё нужно) нашёл ещё одну штуку mysql_insert_id()
то есть ещё такой вариант:
Код

INSERT INTO A smth;
mysql_insert_id()
INSERT INTO Б SMTH2, ID;


Подскажите, пожалуйста, верны ли эти варианты? Или можно сделать как-то более корректно? Что-то мне подсказывает, что я ошибаюсь :-\
PM MAIL ICQ Skype GTalk   Вверх
nonstop
Дата 24.1.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 19.1.2007
Где: Москва

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



используй триггеры в MySql с версии 5.0.2
в мануале все написано
PM MAIL Jabber   Вверх
LSD
Дата 24.1.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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




M
LSD
Перенесено из баз данных



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
dma
Дата 24.1.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.12.2006
Где: Belarus, Minsk

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



Цитата(nonstop @ 24.1.2007,  08:42)
используй триггеры в MySql с версии 5.0.2
в мануале все написано

просто это настолько элементарная операция, что я не думаю, что нужны триггеры... Ведь связь таблиц в базах данных на этом и базируется - на уникальных идентификаторах. Вопрос только в том, как это грамотно сделать?

Это сообщение отредактировал(а) dma - 24.1.2007, 18:32
PM MAIL ICQ Skype GTalk   Вверх
Ignat
Дата 24.1.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Например:
Код

INSERT INTO A smth;
INSERT INTO Б ( SMTH2, REL_ID ) VALUES ( 'smth', LAST_INSERT_ID());



--------------------
Теперь при чем :P
PM   Вверх
Gold Dragon
Дата 25.1.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Ignat, покапался в доках и что-то у меня возникли сомнения

Код

INSERT INTO A smth;
INSERT INTO Б ( SMTH2, REL_ID ) VALUES ( 'smth', LAST_INSERT_ID());
INSERT INTO Б ( SMTH2, REL_ID ) VALUES ( 'smth', LAST_INSERT_ID());

не смотрите на правильность.. Вопрос другой. Во второй и в третьей строке LAST_INSERT_ID() равны?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
skyboy
Дата 25.1.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(Gold Dragon @  25.1.2007,  08:02 Найти цитируемый пост)
не смотрите на правильность.. Вопрос другой. Во второй и в третьей строке LAST_INSERT_ID() равны? 

Код

INSERT INTO Б ( SMTH2, REL_ID ) VALUES ( 'smth', LAST_INSERT_ID()),( 'smth', LAST_INSERT_ID());

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


 




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


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

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