Maison  >  Questions et réponses  >  le corps du texte

Comment insérer plusieurs lignes dans une table MySQL et renvoyer de nouveaux identifiants ?

Habituellement, je peux insérer une ligne dans une table MySQL et obtenir last_insert_id . Mais maintenant, je souhaite insérer en masse de nombreuses lignes dans le tableau et obtenir un tableau d'identifiants. Est-ce que quelqu'un sait comment je peux faire ça ?

Il y a des questions similaires, mais pas exactement les mêmes. Je ne veux pas insérer le nouvel ID dans une table temporaire ; je veux juste récupérer un tableau d'ID.

Puis-je récupérer lastInsertId à partir d’une insertion groupée ?

Instruction de sélection d'insertion multi-lignes MySQL avec last_insert_id()

P粉373990857P粉373990857177 Il y a quelques jours298

répondre à tous(2)je répondrai

  • P粉561438407

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

    La seule façon, je pense, de le faire est de stocker un identifiant unique (guid) pour chaque ensemble de lignes insérées Sélectionnez ensuite l'ID de ligne. Par exemple :

    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';

    Vous pouvez également utiliser uuid() pour générer un guid dans la base de données

    répondre
    0
  • P粉775723722

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

    Ancien fil de discussion, mais je viens d'examiner cela, alors le voici : si vous utilisez InnoDB sur une version récente de MySQL, vous pouvez utiliser LAST_INSERT_ID()ROW_COUNT() pour obtenir une liste d'identifiants.

    InnoDB garantit un numéro de séquence auto-incrémenté lors des insertions groupées, si innodb_autoinc_lock_mode est défini sur 0 (hérité) ou 1 (continu). Vous pouvez ainsi obtenir la LAST_INSERT_ID() 获取第一个 ID,并通过添加 ROW_COUNT()-1dernière pièce d'identité de .

    répondre
    0
  • Annulerrépondre