Normalerweise kann ich eine Zeile in eine MySQL-Tabelle einfügen und erhalte last_insert_id
. Aber jetzt möchte ich viele Zeilen in großen Mengen in die Tabelle einfügen und ein Array von IDs erhalten. Weiß jemand, wie ich das machen kann?
Es gibt einige ähnliche Fragen, aber nicht genau die gleichen. Ich möchte die neue ID nicht in eine temporäre Tabelle einfügen; ich möchte lediglich ein Array von IDs zurückerhalten.
Kann ich lastInsertId aus der Masseneinfügung abrufen?
Mysql-Anweisung zum Einfügen mehrerer Zeilen mit last_insert_id()
我认为可以做到的唯一方法是为插入的每组行存储唯一标识符(guid) 然后选择行 ID。 例如:
您还可以使用
uuid()
在数据库中生成 guid旧线程,但只是研究了这个,所以这里是:如果您在最新版本的 MySQL 上使用 InnoDB,您可以使用
LAST_INSERT_ID()
和ROW_COUNT()
获取 ID 列表。InnoDB 保证在进行批量插入时自动递增的顺序号,前提是
innodb_autoinc_lock_mode
设置为 0(传统)或 1(连续)。 因此,您可以从LAST_INSERT_ID()
获取第一个 ID,并通过添加ROW_COUNT()-1
获取最后 ID。