#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. Переменная работает «для каждого соединения», поэтому, пока вы не разделяете соединения между пользователями, этого не произойдет.