Mysql
 sql >> Datenbank >  >> RDS >> Mysql

AUTO_INCREMENT und LAST_INSERT_ID

SELECT max(employeeid) FROM Employee;

Die obige Abfrage gibt den Wert von employeeid zurück des letzten eingefügten Datensatzes in der Employee-Tabelle, weil employeeid ist eine Auto-Increment-Spalte. Das scheint in Ordnung zu sein, aber angenommen zwei Threads gleichzeitig Einfügeoperationen ausführen, besteht die Möglichkeit, dass Sie eine falsche ID des zuletzt eingefügten Datensatzes erhalten!

Keine Sorge, MySQL bietet eine Funktion, die den Wert der Auto-Increment-Spalte des zuletzt eingefügten Datensatzes zurückgibt.

SELECT LAST_INSERT_ID();

LAST_INSERT_ID() ist immer verbindungsspezifisch , das heißt, selbst wenn die Einfügeoperation gleichzeitig von verschiedenen Verbindungen ausgeführt wird, wird immer der Wert der aktuellen verbindungsspezifischen Operation zurückgegeben.

Sie müssen also zuerst einen Datensatz in die Employee-Tabelle einfügen, die obige Abfrage ausführen, um den ID-Wert zu erhalten, und diesen verwenden, um ihn in die zweite Tabelle einzufügen.