Maison  >  Article  >  base de données  >  Comment LAST_INSERT_ID() se comporte-t-il avec plusieurs instructions INSERT d'enregistrement dans MySQL ?

Comment LAST_INSERT_ID() se comporte-t-il avec plusieurs instructions INSERT d'enregistrement dans MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 11:48:01499parcourir

How does LAST_INSERT_ID() behave with multiple record INSERT statements in 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!

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