Heim  >  Artikel  >  Datenbank  >  Wie verhält sich LAST_INSERT_ID() bei mehreren Datensatzeinfügungen in MySQL?

Wie verhält sich LAST_INSERT_ID() bei mehreren Datensatzeinfügungen in MySQL?

Barbara Streisand
Barbara StreisandOriginal
2024-11-11 13:05:03448Durchsuche

How Does LAST_INSERT_ID() Behave with Multiple Record Inserts in MySQL?

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!

Stellungnahme:
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