Verstehen des Verhaltens von LAST_INSERT_ID() bei mehreren Datensatzeinfügungen
Beim Umgang mit mehreren Datensatzeinfügungen in MySQL ist es wichtig, das Verhalten von zu verstehen Funktion LAST_INSERT_ID(). Im Gegensatz zum Einfügen einzelner Datensätze zeigt LAST_INSERT_ID() ein bestimmtes Verhalten, wenn es mit Anweisungen zum Einfügen mehrerer Datensätze verwendet wird.
Erwartetes Verhalten
Intuitiv könnte man erwarten, dass LAST_INSERT_ID( )-Funktion, um die zuletzt eingefügte ID für das Einfügen mehrerer Datensätze zurückzugeben. Dies ist jedoch nicht der Fall.
Tatsächliches Verhalten
Wie in der MySQL-Dokumentation dokumentiert, gibt LAST_INSERT_ID() die generierte ID nur für die erste zurück row wird in eine Anweisung zum Einfügen mehrerer Datensätze eingefügt. Dies ist beabsichtigt, um eine einfache Reproduktion derselben Anweisung auf verschiedenen Servern zu ermöglichen.
Betrachten Sie beispielsweise die folgende Anweisung zum Einfügen mehrerer Datensätze:
INSERT INTO people (name,age) VALUES ('William',25), ('Bart',15), ('Mary',12);
Obwohl sie drei Zeilen einfügt, wird die LAST_INSERT_ID() gibt die ID für „William“ zurück, da sie den ersten eingefügten Datensatz darstellt.
Auswirkungen auf den Code
Dieses Verhalten hat Auswirkungen auf Ihren Code. Wenn Sie sich auf LAST_INSERT_ID() verlassen, um die IDs aller eingefügten Datensätze in einer Einfügung mehrerer Datensätze zu erfassen, erhalten Sie nur die ID für den ersten Datensatz. Um die IDs aller eingefügten Datensätze genau abzurufen, können Sie die RETURNING-Klausel in Verbindung mit der INSERT-Anweisung verwenden oder alternative Ansätze in Betracht ziehen, z. B. die Verwendung einer Schleife, um Datensätze einzeln einzufügen.
Das obige ist der detaillierte Inhalt vonWie verhält sich LAST_INSERT_ID() bei mehreren Datensatzeinfügungen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!