использование mysql для получения списка вставленных записей

#mysql

#mysql

Вопрос:

Вставка нескольких записей в таблицу в MYSQL возвращает мне последний вставленный идентификатор.

Есть ли способ, которым я могу получить список всех вставленных записей?

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

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

1. Единственный способ, который я могу придумать для этого, — сохранить все старые идентификаторы во временной таблице, вставить новые записи, затем вернуть все идентификаторы, которые не существуют во временной таблице.

2. Есть ли в вашей таблице creation_time столбец? Вы можете сохранить время, когда вы начали вставлять, затем выбрать все записи, добавленные в это время или после него.

3. Я не уверен, что использование нескольких инструкций вставки одной строки по сравнению с одной инструкцией вставки нескольких строк действительно сильно снижает производительность, если вы не отправляете каждую инструкцию вставки одной строки отдельно в свою базу данных. Таким образом, за каждой вставкой в одну строку может следовать инструкция для получения идентификатора записи каждой вставки, созданного этой вставкой. Однако вам придется собрать разные идентификаторы строк в массив или строку и отправить их обратно в любой код, который инициировал вставки, что, кроме использования оператора select from dual, я не знаю, как вы могли бы сделать.

4. @Barmar У меня нет списка старых идентификаторов, потому что я хочу создать несколько записей. Как вы упомянули, у меня также возникла идея вставлять записи, а затем сортировать по creation_time и ограничивать его количеством запрошенных записей. Но в конечном итоге я добавил параметр запроса к своему POST-запросу, чтобы ограничить записи. Тем не менее, спасибо за ваше время.

5. Моя идея заключалась в том, что вы должны были создать список старых идентификаторов перед вставкой: CREATE TEMPORARY TABLE old_ids AS SELECT id FROM yourTable . Затем выполните все вставки, и вы сможете получить все новые идентификаторы с SELECT id FROM yourTable WHERE id NOT IN (SELECT id FROM old_ids)