Einfügen mehrerer Zeilen mit ID-Abruf in MySQL
Das Einfügen von Daten in eine MySQL-Tabelle gibt normalerweise die ID der neu erstellten Zeile über die LAST_INSERT_ID zurück ()-Funktion. Beim Einfügen mehrerer Zeilen kann es jedoch schwierig sein, ein Array von IDs zu erhalten.
Masseneinfügung mit InnoDB
Für InnoDB-Tabellen mit neueren MySQL-Versionen können Sie die verwenden Kombination aus LAST_INSERT_ID() und ROW_COUNT() zum Abrufen der eingefügten IDs. InnoDB stellt sequentielle Auto-Inkrement-IDs für Masseneinfügungen bereit, wenn die Einstellung innodb_autoinc_lock_mode 0 (traditionell) oder 1 (konsekutiv) ist.
ID-Bereich abrufen
Angenommen, es handelt sich um eine Masseneinfügung Anweisung wurde ausgeführt:
INSERT INTO table (`column1`, `column2`) VALUES ..., ..., ...
Sie können den Bereich berechnen von IDs für die neu eingefügten Zeilen mithilfe der folgenden Formel:
INSERTED_ID_RANGE = [LAST_INSERT_ID(), LAST_INSERT_ID() + ROW_COUNT() - 1]
Beispiel
Betrachten Sie die folgende Masseneinfügung:
INSERT INTO table (`column1`, `column2`) VALUES (1, 'value 1'), (2, 'value 2'), (3, 'value 3');
Angenommen Die LAST_INSERT_ID() nach dem Einfügen ist 5, der eingefügte ID-Bereich würde sein:
[5, 5 + ROW_COUNT() - 1] = [5, 5 + 3 - 1] = [5, 7]
Daher wäre das Array der eingefügten IDs [5, 6, 7].
Das obige ist der detaillierte Inhalt vonWie rufe ich IDs ab, nachdem ich mehrere Zeilen in MySQL eingefügt habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!