Maison >base de données >tutoriel mysql >Comment LAST_INSERT_ID() se comporte-t-il avec les instructions INSERT à enregistrements multiples ?
Comportement LAST_INSERT_ID() avec les instructions INSERT à enregistrements multiples
Les instructions INSERT peuvent insérer plusieurs enregistrements en une seule opération, offrant ainsi une efficacité accrue dans la base de données modifications. Cependant, le comportement de LAST_INSERT_ID() dans les scénarios ilyen est distinct de son fonctionnement avec des insertions d'enregistrement unique.
Comme souligné dans la documentation MySQL, LAST_INSERT_ID() renvoie la valeur générée uniquement pour le premier ligne insérée dans une instruction INSERT à enregistrements multiples. Ce comportement est conçu pour faciliter la reproduction de telles instructions sur d'autres serveurs, garantissant ainsi la cohérence même dans des environnements distribués.
Exemple
Considérons l'exemple suivant :
INSERT INTO people (name,age) VALUES ('William',25), ('Bart',15), ('Mary',12);
Après avoir exécuté cette instruction, LAST_INSERT_ID() récupérera la valeur générée pour la première ligne insérée (« William », 25). Cela contraste avec la valeur attendue de 3, qui correspondrait à la dernière ligne insérée.
Implications pratiques
Comprendre ce comportement est crucial pour gérer correctement les valeurs générées dans un code qui utilise des instructions INSERT à enregistrements multiples. Il n'est pas conseillé de s'appuyer sur LAST_INSERT_ID() pour obtenir le dernier ID inséré dans de tels cas. Au lieu de cela, des méthodes alternatives telles que la récupération du nombre de lignes concernées ou la spécification explicite de la valeur d'incrémentation automatique doivent être envisagées pour une récupération précise des enregistrements.
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!