Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie funktioniert „LAST_INSERT_ID()' mit „INSERT'-Anweisungen mit mehreren Datensätzen in MySQL?

DDD
Freigeben: 2024-11-17 10:45:04
Original
247 Leute haben es durchsucht

How Does `LAST_INSERT_ID()` Work with Multiple-Record `INSERT` Statements in MySQL?

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage