Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verhält sich LAST_INSERT_ID() in mehrzeiligen INSERT-Anweisungen in MySQL?

Linda Hamilton
Freigeben: 2024-11-14 20:14:02
Original
725 Leute haben es durchsucht

How Does LAST_INSERT_ID() Behave in Multi-Row INSERT Statements in MySQL?

Zurückgeben der letzten Einfügungs-ID in mehrzeiligen INSERT-Anweisungen mit LAST_INSERT_ID() in MySQL

Beim Ausführen mehrerer Datensatzeinfügungen in MySQL Verständnis Das Verhalten der Funktion LAST_INSERT_ID() wird entscheidend. Im Gegensatz zu einzeiligen Einfügungen, bei denen die ID der eingefügten Zeile bereitgestellt wird, verhält sich LAST_INSERT_ID() bei mehrzeiligen INSERT-Anweisungen anders.

Betrachten Sie beispielsweise die folgende Abfrage:

INSERT INTO people (name, age)
VALUES ('William', 25), ('Bart', 15), ('Mary', 12);
Nach dem Login kopieren

Nach der Ausführung dieser Anweisung könnte man erwarten, dass die Funktion LAST_INSERT_ID() die ID der zuletzt eingefügten Zeile (3) zurückgibt. Das Verhalten von LAST_INSERT_ID() weicht jedoch von dieser Erwartung ab.

LAST_INSERT_ID() gibt die erste Einfügungs-ID zurück

Im Kontext mehrerer INSERT-Anweisungen für Datensätze gilt LAST_INSERT_ID( ) gibt nur die ID zurück, die für die erste eingefügte Zeile generiert wurde. Dieses Verhalten ist in der MySQL-Dokumentation explizit dokumentiert:

Important
If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.
Nach dem Login kopieren

Diese Entwurfsentscheidung stellt sicher, dass dieselbe INSERT-Anweisung problemlos und ohne Probleme auf einem anderen Server reproduziert werden kann. Durch die Verwendung der ID der ersten eingefügten Zeile wird die Reproduktion des beabsichtigten Verhaltens einfacher.

Auswirkungen auf das Code-Design

Das Verständnis dieses Verhaltens ist entscheidend, wenn Code entworfen wird, der darauf basiert die Funktion LAST_INSERT_ID() für mehrzeilige Einfügungen. Entwickler sollten sich in solchen Szenarien nicht auf LAST_INSERT_ID() verlassen, um die spezifischen IDs eingefügter Zeilen zu ermitteln. Alternative Ansätze zum Verfolgen oder Zugreifen auf Zeilen-IDs bei mehrzeiligen Einfügungen sollten in Betracht gezogen werden.

Das obige ist der detaillierte Inhalt vonWie verhält sich LAST_INSERT_ID() in mehrzeiligen INSERT-Anweisungen 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage