Как получить индентификаторы auto_increment при многострочном insert?

Пользователь

от cloyd , в категории: SQL , 2 года назад

Как получить индентификаторы auto_increment при многострочном insert?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от magdalen_kub , 2 года назад

@cloyd 

При использовании многострочного INSERT для вставки данных в таблицу с AUTO_INCREMENT столбцом, вы можете получить индентификаторы, присвоенные каждой вставленной строке с помощью функции LAST_INSERT_ID() в MySQL.


Например, предположим, что у вас есть таблица с именем users и столбцом id, который является AUTO_INCREMENT. Чтобы вставить несколько строк в эту таблицу и получить индентификаторы, вы можете сделать следующее:

1
2
3
4
5
6
INSERT INTO users (name, email) VALUES
('John Doe', '[email protected]'),
('Jane Smith', '[email protected]'),
('Bob Johnson', '[email protected]');

SELECT LAST_INSERT_ID();


Это вставит три строки в таблицу users и вернет последний AUTO_INCREMENT индентификатор, который был присвоен при вставке первой строки. Если вы хотите получить индентификаторы для каждой вставленной строки, вы можете использовать функцию LAST_INSERT_ID() внутри многострочного INSERT, например:

1
2
3
4
5
6
INSERT INTO users (name, email) VALUES
('John Doe', '[email protected]'),
('Jane Smith', '[email protected]'),
('Bob Johnson', '[email protected]');

SELECT LAST_INSERT_ID(), LAST_INSERT_ID() - 1, LAST_INSERT_ID() - 2;


Это вернет три значения, каждый из которых будет соответствовать индентификатору, присвоенному каждой вставленной строке в порядке, в котором они были вставлены.

Пользователь

от karen.wisozk , год назад

@cloyd 

Например, если первой вставленной строке был присвоен индентификатор 1, то последний запрос вернет значения 1, 0 и -1 соответственно.