Вставка автоматически сгенерированного индекса из таблицы в другую таблицу

#mysql #sql

#mysql #sql

Вопрос:

Допустим, у нас есть две таблицы:

  • table1 (id, name, type) где id является первичным ключом и автоматически увеличивается
  • table2 (item_id, place) где item_id имеется в виду id в table1

Я хочу сделать следующее:

 insert into table1(name, type) values (y, z);
  

Предполагая, что этот запрос будет присваиваться id=x для этой строки, тогда:

 insert into table2(item_id, place) values (x, w);
  

Как я мог это сделать?
Другими словами, как я мог бы получить id только что добавленной строки?

Комментарии:

1. Вы делаете это только с помощью mysql? Задействован ли какой-либо язык?

2. Вставки в одну строку или наборы? Тот же источник, например, bcp или промежуточная таблица?

Ответ №1:

 insert into table1(name, type) values (y, z);
insert into table2(item_id, place) values (LAST_INSERT_ID() , w);
  

LAST_INSERT_ID() сделает это за вас. В большинстве языков программирования есть специальная функция, которая вызывает это для вас, но она работает в чистом MySQL.

Комментарии:

1. Это веб-скрипт, что, если два пользователя используют страницу одновременно, первый вставляет значения, затем второй пользователь вставляет после него, означает ли это, что LAST_INSERT_ID() вернет вставленное вторым пользователем значение или первое «текущее»??

2. Переменная работает «для каждого соединения», поэтому, пока вы не разделяете соединения между пользователями, этого не произойдет.