Maison > base de données > tutoriel mysql > le corps du texte

Comment LAST_INSERT_ID() se comporte-t-il avec plusieurs insertions d'enregistrements dans MySQL ?

Barbara Streisand
Libérer: 2024-11-11 13:05:03
original
431 Les gens l'ont consulté

How Does LAST_INSERT_ID() Behave with Multiple Record Inserts in MySQL?

Comprendre le comportement de LAST_INSERT_ID() avec plusieurs insertions d'enregistrements

Lorsque vous traitez des insertions de plusieurs enregistrements dans MySQL, il est essentiel de comprendre le comportement du Fonction LAST_INSERT_ID(). Contrairement aux insertions à enregistrement unique, LAST_INSERT_ID() présente un comportement distinct lorsqu'il est utilisé avec des instructions d'insertion à enregistrements multiples.

Comportement attendu

Intuitivement, on pourrait s'attendre à ce que LAST_INSERT_ID( ) pour renvoyer le dernier ID inséré pour une insertion de plusieurs enregistrements. Cependant, ce n'est pas le cas.

Comportement réel

Comme documenté dans la documentation MySQL, LAST_INSERT_ID() renverra l'ID généré pour uniquement le premier row inséré dans une instruction d'insertion à enregistrements multiples. Ceci est délibéré pour permettre la reproduction facile de la même instruction sur différents serveurs.

Par exemple, considérons l'instruction d'insertion à enregistrements multiples suivante :

INSERT INTO people (name,age)
VALUES ('William',25), ('Bart',15), ('Mary',12);
Copier après la connexion

Même si elle insère trois lignes, la LAST_INSERT_ID() renverra l'ID de « William », car il représente le premier enregistrement inséré.

Implications pour Code

Ce comportement a des implications pour votre code. Si vous comptez sur LAST_INSERT_ID() pour capturer les ID de tous les enregistrements insérés dans une insertion de plusieurs enregistrements, vous n'obtiendrez que l'ID du premier enregistrement. Pour récupérer avec précision les ID de tous les enregistrements insérés, vous pouvez utiliser la clause RETURNING conjointement avec l'instruction INSERT ou envisager des approches alternatives telles que l'utilisation d'une boucle pour insérer les enregistrements un par un.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal