Wie füge ich mehrere Zeilen in eine MySQL-Tabelle ein und gebe neue IDs zurück?
P粉373990857
P粉373990857 2024-04-06 10:03:44
0
2
454

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()

P粉373990857
P粉373990857

Antworte allen(2)
P粉561438407

我认为可以做到的唯一方法是为插入的每组行存储唯一标识符(guid) 然后选择行 ID。 例如:

INSERT INTO t1
(SELECT col1,col2,col3,'3aee88e2-a981-1027-a396-84f02afe7c70' FROM a_very_large_table);
COMMIT;

SELECT id FROM t1 
WHERE guid='3aee88e2-a981-1027-a396-84f02afe7c70';

您还可以使用 uuid() 在数据库中生成 guid

P粉775723722

旧线程,但只是研究了这个,所以这里是:如果您在最新版本的 MySQL 上使用 InnoDB,您可以使用 LAST_INSERT_ID()ROW_COUNT() 获取 ID 列表。

InnoDB 保证在进行批量插入时自动递增的顺序号,前提是 innodb_autoinc_lock_mode 设置为 0(传统)或 1(连续)。 因此,您可以从 LAST_INSERT_ID() 获取第一个 ID,并通过添加 ROW_COUNT()-1 获取最后 ID。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage