powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как бы вставить данные в две таблицы сразу?
7 сообщений из 7, страница 1 из 1
Как бы вставить данные в две таблицы сразу?
    #32902327
LuMee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы:
1. Topic( id, title), где id - автоинкрементное, первичный ключ
2. Message(id, topic_id, body),где topic_id references Topic(id).
Нужно добавить запись в Topic, а потом сразу же для нее добавить запись в Message. Соотвественно, возникает вопрос - как узнать id-шник для свежедобавленной записи?
Сначала хотел так: SELECT MAX(id) FROM Topic , но тут будут проблемы при одновременной работе нескольких юзеров. Как быть, подскажите, плз.
...
Рейтинг: 0 / 0
Как бы вставить данные в две таблицы сразу?
    #32902400
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select last_insert_id()
вернет значение последнего автоинкрементального поля в этой сессии (то есть другие пользователи не помеха)
...
Рейтинг: 0 / 0
Как бы вставить данные в две таблицы сразу?
    #33113838
Geen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, добрые!
А текст инсерта бы?:(

Geen
...
Рейтинг: 0 / 0
Как бы вставить данные в две таблицы сразу?
    #33116196
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну примерно так (не тестировал):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
# Первый топик
insert into Topic (title) values ('title 1');
set @LastID:= last_insert_id();
insert into Message (topic_id, body) values (@LastID, 'body 1.1');
insert into Message (topic_id, body) values (@LastID, 'body 1.2');
# Второй топик
insert into Topic (title) values ('title 2');
set @LastID:= last_insert_id();
insert into Message (topic_id, body) values (@LastID, 'body 2.1');
insert into Message (topic_id, body) values (@LastID, 'body 2.2');
# и т.д.

Удачи,
Дмитрий

--
AnyDAC ( www.da-soft.com ) - Oracle, MySQL, MSSQL, MSAccess, IBM DB2,
Sybase ASA, DbExpress, ODBC freeware data access framework.
...
Рейтинг: 0 / 0
Как бы вставить данные в две таблицы сразу?
    #33116362
Astron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mysql> create table p1 (id int primary key auto_increment, dat int);
Query OK, 0 rows affected (0.13 sec)

mysql> create table p2 (id int primary key auto_increment, id_1 int, dat2 int);
Query OK, 0 rows affected (0.09 sec)

mysql> insert into p1 (p1.dat) values (10);
Query OK, 1 row affected (0.03 sec)

mysql> insert into p2 (p2.id_1,p2.dat2) values (last_insert_id(),20);
Query OK, 1 row affected (0.00 sec)
...
Рейтинг: 0 / 0
Как бы вставить данные в две таблицы сразу?
    #33116393
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если добавить еще один INSERT:
Код: plaintext
insert into p2 (p2.id_1,p2.dat2) values (last_insert_id(), 30 )
то произойдет не то что хотелось бы, так как last_insert_id() вернет значение P2.ID из предыдущего INSERT. Поэтому я и преложил сохранить last_insert_id() в переменную.

Удачи,
Дмитрий
...
Рейтинг: 0 / 0
Как бы вставить данные в две таблицы сразу?
    #33123065
Geen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо люди, потестим:)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как бы вставить данные в две таблицы сразу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]