Maison >base de données >tutoriel mysql >Comment LAST_INSERT_ID() se comporte-t-il avec les instructions INSERT à enregistrements multiples ?

Comment LAST_INSERT_ID() se comporte-t-il avec les instructions INSERT à enregistrements multiples ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-25 08:53:10195parcourir

How does LAST_INSERT_ID() behave with multiple-record INSERT statements?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn