Comment insérer plusieurs lignes dans une table MySQL et renvoyer de nouveaux identifiants ?
P粉373990857
P粉373990857 2024-04-06 10:03:44
0
2
414

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粉373990857
P粉373990857

répondre à tous(2)
P粉561438407

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粉775723722

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 .

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal