2014-09-18 5 views
2

При выполнении нескольких операторов MySQl, есть ли способ, которым я могу получить последний вставленный идентификатор и вставить его в другую таблицу? Например, если первичный ключ является внешним ключом во второй таблице.Mysql Вставить идентификатор, а затем вставить в него ID

Таблица один

user_id | username| 
------------------- 
1  |userone 
2  |usertwo 
3  |userthree 

Таблица 2

contact_id | user_id | contact_name 
------------------------------------ 
12   | 1  | John Doe 
18   | 2  | Jane Doe 
23   | 3  | An other 

В основном я хочу, чтобы вставить на двух столах одновременно, вставьте на столе один затем использовать значение для вставки на таблицу 2 , а не вставить на стол 1, а затем на таблицу два.

ответ

0

Да, функция LAST_INSERT_ID() возвращает самый последний идентификатор, сгенерированный столбцом автоматического увеличения в текущем сеансе.

Таким образом, вы можете вставить в вашу основную таблицу:

INSERT INTO `table1` (username) VALUES ('...'); 

Затем вставьте в детской таблице:

INSERT INTO `table2` (user_id, contact_name) VALUES (LAST_INSERT_ID(), '...'); 

Если у вас есть несколько строк, чтобы вставить в таблицу ребенка, и ребенок стола первичный ключ сам генерирует новые значения, это означает, что вы должны сохранить значение в переменной, чтобы повторно использовать его несколько раз. В противном случае ПК-таблица дочерних таблиц станет новым последним сгенерированным значением. Ниже приведен пример сохранения значения в переменной сеанса MySQL:

SET @user_id = LAST_INSERT_ID(); 
INSERT INTO `table2` (user_id, contact_name) VALUES (@user_id, '...'); 
INSERT INTO `table2` (user_id, contact_name) VALUES (@user_id, '...'); 
INSERT INTO `table2` (user_id, contact_name) VALUES (@user_id, '...'); 
Смежные вопросы