Heim  >  Fragen und Antworten  >  Hauptteil

Wie füge ich mehrere Zeilen in eine MySQL-Tabelle ein und gebe neue IDs zurück?

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粉373990857P粉373990857177 Tage vor300

Antworte allen(2)Ich werde antworten

  • P粉561438407

    P粉5614384072024-04-07 09:07:17

    我认为可以做到的唯一方法是为插入的每组行存储唯一标识符(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

    Antwort
    0
  • P粉775723722

    P粉7757237222024-04-07 00:12:23

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

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

    Antwort
    0
  • StornierenAntwort