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()
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 :
Vous pouvez également utiliser
uuid()
pour générer un guid dans la base de donnéesAncien 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 laLAST_INSERT_ID()
获取第一个 ID,并通过添加ROW_COUNT()-1
dernière pièce d'identité de .