Ich habe eine Tabelle in einer Datenbank, die Elemente speichert. Jeder Artikel hat eine eindeutige ID, die der DB beim Einfügen (Auto-Increment) generiert.
Ein Benutzer kann eine bestimmte Aufgabe ausführen, die der Datenbank X-Elemente hinzufügen, jedoch sollte mein Programm (C++ - Serveranwendung, die den MySQL-Connector verwendet) die IDs zurückgeben, die die Datenbank sofort generiert hat. Wenn ich beispielsweise 6 Elemente hinzufüge, muss der Server 6 neue eindeutige IDs an den Client zurückgeben.
Was ist der schnellste/sauberste Weg, um so etwas zu tun? Bisher habe ich gemacht INSERT
gefolgt von SELECT
für jeden neuen Artikel ODER INSERT
gefolgt von last_insert_id
, aber wenn es 50 Elemente hinzufügen, dauert es mindestens ein paar Sekunden, die überhaupt nicht gut für Benutzererfahrung ist.Schnellste Möglichkeit, mehrere eingefügte Zeilen auszuwählen
sql_task.query("INSERT INTO `ItemDB` (`ItemName`, `Type`, `Time`) VALUES ('%s', '%d', '%d')", strName.c_str(), uiType, uiTime);
gibt es die ID:
uint64_t item_id { sql_task.last_id() }; //This calls mysql_insert_id
bitte fügen Sie bitte einen Code bitte –
In Ordnung, ich habe etwas Code hinzugefügt. Es funktioniert alles gut, aber es ist überhaupt nicht schnell. – Spook