Insertion groupée avec récupération d'ID dans MySQL
L'insertion de plusieurs lignes dans une table MySQL et la récupération des nouveaux ID sont une exigence courante qui peut ne pas être immédiatement évident à mettre en œuvre. Ce document explique comment y parvenir à l'aide des fonctions LAST_INSERT_ID() et ROW_COUNT() de MySQL, en particulier lors de l'utilisation du moteur de stockage InnoDB.
Génération séquentielle d'ID d'InnoDB
Lors de l'utilisation le moteur de stockage InnoDB avec MySQL, les insertions en masse maintiennent l'attribution séquentielle des ID AUTO INCREMENT, étant donné que le innodb_autoinc_lock_mode est défini sur 0 (traditionnel) ou 1 (consécutif).
Récupération d'un tableau d'ID
Pour récupérer un tableau d'ID après une insertion groupée, suivez ces étapes :
Exemple :
-- Insert bulk rows INSERT INTO table_name (column1, column2) VALUES (val1, val2), (val3, val4), (val5, val6); -- Get the first ID SET @first_id = LAST_INSERT_ID(); -- Get the number of rows inserted SET @num_rows = ROW_COUNT(); -- Create an array of IDs SET @ids = ARRAY(); -- Populate the array WHILE (@i < @num_rows) DO SET @ids[@i] = @first_id + @i; SET @i = @i + 1; END WHILE;
Cette technique fournit efficacement un tableau d'identifiants nouvellement générés après une insertion groupée, permettant un traitement ultérieur ou une utilisation dans la logique de l'application.
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!