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 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.
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!