У меня есть таблица в базе данных, в которой хранятся элементы. Каждый элемент имеет уникальный идентификатор, который создается БД при вставке (автоинкремент).
Пользователь может выполнить определенную задачу, которая добавит элементы X в базу данных, однако моя программа (серверное приложение C++ с использованием соединителя MySQL) должна вернуть идентификаторы, сгенерированные в базе данных сразу. Например, если я добавлю 6 элементов, сервер должен вернуть клиенту 6 новых уникальных идентификаторов.
Какой самый быстрый/самый чистый способ сделать такую вещь? До сих пор я делал INSERT
, за которым следует SELECT
для каждого нового элемента ИЛИ INSERT
, за которым следует last_insert_id
, однако если есть 50 элементов для добавления, это займет несколько секунд, по крайней мере, что не очень хорошо для пользователей.Самый быстрый способ выбора нескольких вставленных строк
sql_task.query("INSERT INTO `ItemDB` (`ItemName`, `Type`, `Time`) VALUES ('%s', '%d', '%d')", strName.c_str(), uiType, uiTime);
Получение ID:
uint64_t item_id { sql_task.last_id() }; //This calls mysql_insert_id
пожалуйста, добавьте код –
Хорошо, я добавил код. Все работает отлично, но это совсем не быстро. – Spook