Verhalten von LAST_INSERT_ID() bei INSERT-Anweisungen mit mehreren Datensätzen in MySQL
Die LAST_INSERT_ID()-Funktion von MySQL ruft die für die zuletzt eingefügte Zeile generierte ID ab. Dieses Verhalten kann bei Verwendung einer INSERT-Anweisung für einen einzelnen Datensatz von einer INSERT-Anweisung für mehrere Datensätze abweichen.
INSERT-Anweisungen für einen einzelnen Datensatz
Mit einem INSERT für einen einzelnen Datensatz -Anweisung gibt LAST_INSERT_ID() wie erwartet die generierte ID zurück, die dem letzten Datensatz entspricht eingefügt.
INSERT-Anweisungen für mehrere Datensätze
Bei Verwendung einer INSERT-Anweisung für mehrere Datensätze gibt LAST_INSERT_ID() jedoch die ID zurück, die der ersten eingefügten Zeile entspricht. Dieses Verhalten ist in den MySQL-Dokumenten explizit dokumentiert und betont, dass es die einfache Reproduktion derselben INSERT-Anweisung auf einem anderen Server ermöglicht.
Beispiel
Betrachten Sie das folgende INSERT mit mehreren Datensätzen Anweisung:
INSERT INTO people (name,age) VALUES ('William',25), ('Bart',15), ('Mary',12);
Nachdem diese Anweisung ausgeführt wurde, gibt LAST_INSERT_ID() 1 zurück, nicht 3, sondern gibt die ID an, die für den ersten eingefügten Datensatz („William“) generiert wurde.
Begründung
Dieses Verhalten stellt die Datenkonsistenz auf allen Servern sicher. Wenn LAST_INSERT_ID() die ID für die zuletzt eingefügte Zeile in einer Anweisung mit mehreren Datensätzen zurückgeben würde, wäre die INSERT-Anweisung auf anderen Servern, die denselben Zeilen unterschiedliche IDs zuweisen, nicht reproduzierbar.
Das obige ist der detaillierte Inhalt vonWie funktioniert „LAST_INSERT_ID()' mit „INSERT'-Anweisungen mit mehreren Datensätzen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!