Verhalten von LAST_INSERT_ID() bei INSERT-Anweisungen für mehrere Datensätze
Beim Einfügen mehrerer Datensätze in eine MySQL-Tabelle mit einer einzigen INSERT-Anweisung gilt LAST_INSERT_ID() Gibt normalerweise die ID des ersten eingefügten Datensatzes und nicht des letzten zurück.
Wie im bestätigt In der MySQL-Dokumentation stellt dieses Verhalten sicher, dass die INSERT-Anweisung auf anderen Servern korrekt reproduziert werden kann. Der ID-Wert für nachfolgende Datensätze wird nicht zurückgegeben, da er nicht konsistent über verschiedene Datenbankserver hinweg zugewiesen werden kann.
Beispiel:
Bedenken Sie die folgende INSERT-Anweisung:
INSERT INTO people (name, age) VALUES ('William', 25), ('Bart', 15), ('Mary', 12);
Nach der Ausführung dieser Anweisung gibt LAST_INSERT_ID() 1 zurück, die ID des ersten eingefügten Datensatzes (William). Dies ist das erwartete Verhalten und stellt sicher, dass die Anweisung ohne unbeabsichtigte Ergebnisse repliziert werden kann.
Auswirkungen:
Bei Code, der mehrere Datensatzeinfügungen verarbeitet, ist es wichtig, sich dessen bewusst zu sein Beheben Sie dieses Verhalten und behandeln Sie die ID-Werte entsprechend. Wenn Sie beispielsweise die IDs aller eingefügten Datensätze abrufen müssen, müssen Sie möglicherweise einen anderen Ansatz verwenden, z. B. die Anzahl der eingefügten Zeilen zurückgeben und dann die IDs einzeln abrufen.
Das obige ist der detaillierte Inhalt vonWie verhält sich LAST_INSERT_ID() bei mehreren INSERT-Anweisungen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!