Maison >base de données >tutoriel mysql >Comment récupérer efficacement les identifiants à incrémentation automatique après des insertions groupées dans MySQL ?
Obtention d'ID à incrémentation automatique à partir d'insertions groupées dans MySQL
L'une des tâches courantes dans la gestion de bases de données consiste à insérer plusieurs lignes dans une table et récupérer les ID d'auto-incrémentation générés pour chaque ligne. Bien que la récupération du dernier ID inséré soit simple à l'aide de la fonction LAST_INSERT_ID(), les insertions groupées posent un défi pour obtenir un tableau de tous les ID générés.
Méthode traditionnelle : insertion via une table temporaire
Auparavant, une technique courante consistait à insérer les nouveaux identifiants dans une table temporaire et à utiliser une sous-requête pour les récupérer. Cependant, cette approche nécessite des étapes supplémentaires et introduit une surcharge de performances.
Utilisation de LAST_INSERT_ID() et ROW_COUNT() avec InnoDB
Versions récentes de MySQL, en particulier celles utilisant InnoDB moteur de stockage, fournissent une méthode alternative pour récupérer les ID d’insertion en masse. Cette méthode exploite la fonction LAST_INSERT_ID() avec ROW_COUNT() pour extraire la plage de valeurs d'incrémentation automatique attribuées.
Procédure :
Exemple :
INSERT INTO `my_table` (`name`, `email`) VALUES ('John Doe', 'john.doe@example.com'), ('Jane Doe', 'jane.doe@example.com'), ('Peter Jones', 'peter.jones@example.com'); SET @first_id = LAST_INSERT_ID(); SET @last_id = @first_id + ROW_COUNT() - 1; SELECT * FROM `my_table` WHERE `id` BETWEEN @first_id AND @last_id;
Avantages :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!