Maison > Questions et réponses > le corps du texte
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粉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
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()-1
dernière pièce d'identité de .