получить идентификаторы нескольких вставленных строк - PullRequest
0 голосов
/ 03 апреля 2020

Мне нужно получить список новых идентификаторов, вставленных одним запросом (это автоинкремент, я делаю

INSERT INTO xtable(value1,value2,value3,value4) VALUES
(val1,val2,val3,val4),
(val1,val2,val3,val4),
(val1,val2,val3,val4),
(val1,val2,val3,val4), 
(val1,val2,val3,val4)

Так, как вы видите в одном запросе, я вставляю 5 строк, как я могу получить эти идентификаторы? Я не хочу делать выбор после запроса вставки, чтобы получить последние IDS или область видимости, потому что он может go ошибиться, если он идет медленно, и другая функциональность также делает запрос вставки, в любом случае тот же запрос INSERT возвращает идентификаторы вставленных строк? Спасибо!

1 Ответ

1 голос
/ 03 апреля 2020

Страница документации MySQL: https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html говорит:

Для многострочной вставки LAST_INSERT_ID () и mysql_insert_id () фактически возвращают ключ AUTO_INCREMENT из первый из вставленных строк. Это позволяет корректно воспроизводить многострочные вставки на других серверах в настройке репликации.

Так что, если у вас есть идентификатор первого - я ожидаю, что каждой записи по порядку будет присвоен следующее большее значение, поскольку многострочная вставка будет завершена в одной транзакции атома c. Поэтому, если вы знаете первый идентификатор, вы просто увеличиваете его, чтобы получить значения, назначенные каждой строке по очереди. Например, если у вас есть 4 строки, а первая получает ID 45, то остальным будет 46, 47, 48.

Затем вы можете также обратиться к этой странице документации, которая описывает больше и дает примеры того, как использовать LAST_INSERT_ID (). https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last -insert-ID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...