Maison > Article > base de données > Comment LAST_INSERT_ID() se comporte-t-il avec plusieurs instructions INSERT d'enregistrement dans MySQL ?
Comportement de LAST_INSERT_ID() avec des instructions INSERT à plusieurs enregistrements
Lors de l'insertion de plusieurs enregistrements dans une table MySQL avec une seule instruction INSERT, LAST_INSERT_ID() renvoie généralement l'ID du premier enregistrement inséré plutôt que du dernier.
Comme confirmé dans la documentation MySQL, ce comportement garantit que l'instruction INSERT peut être reproduite avec précision sur d'autres serveurs. La valeur d'ID des enregistrements suivants n'est pas renvoyée car elle ne peut pas être attribuée de manière cohérente sur différents serveurs de base de données.
Exemple :
Considérez l'instruction INSERT suivante :
INSERT INTO people (name, age) VALUES ('William', 25), ('Bart', 15), ('Mary', 12);
Après avoir exécuté cette instruction, LAST_INSERT_ID() renverra 1, l'ID du premier enregistrement inséré (William). Il s'agit du comportement attendu et garantit que l'instruction peut être répliquée sans résultats inattendus.
Implications :
Dans le code qui gère plusieurs insertions d'enregistrements, il est important d'en être conscient de ce comportement et gérer les valeurs d'ID en conséquence. Par exemple, si vous devez récupérer les ID de tous les enregistrements insérés, vous devrez peut-être utiliser une autre approche, telle que renvoyer le nombre de lignes insérées, puis récupérer les ID individuellement.
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!