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

Comment LAST_INSERT_ID() se comporte-t-il dans les instructions INSERT multi-lignes dans MySQL ?

Linda Hamilton
Libérer: 2024-11-14 20:14:02
original
726 Les gens l'ont consulté

How Does LAST_INSERT_ID() Behave in Multi-Row INSERT Statements in MySQL?

Renvoi du dernier ID d'insertion dans les instructions INSERT multi-lignes à l'aide de LAST_INSERT_ID() dans MySQL

Lors de l'exécution de plusieurs insertions d'enregistrements dans MySQL, comprendre le comportement de la fonction LAST_INSERT_ID() devient crucial. Contrairement aux insertions sur une seule ligne où elle fournit l'ID de la ligne insérée, LAST_INSERT_ID() se comporte différemment avec les instructions INSERT à plusieurs lignes.

Par exemple, considérons la requête suivante :

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

Après avoir exécuté cette instruction, on pourrait s'attendre à ce que la fonction LAST_INSERT_ID() renvoie l'ID de la dernière ligne insérée (3). Cependant, le comportement de LAST_INSERT_ID() diverge de cette attente.

LAST_INSERT_ID() renvoie le premier ID d'insertion

Dans le contexte d'instructions INSERT à enregistrements multiples, LAST_INSERT_ID( ) renvoie l'ID généré pour la première ligne insérée uniquement. Ce comportement est explicitement documenté dans la documentation de MySQL :

Important
If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.
Copier après la connexion

Cette décision de conception garantit que la même instruction INSERT peut être facilement reproduite sur un autre serveur sans aucun problème. En utilisant l'ID de la première ligne insérée, reproduire le comportement souhaité devient simple.

Implications pour la conception du code

Comprendre ce comportement est crucial lors de la conception d'un code qui s'appuie sur la fonction LAST_INSERT_ID() pour les insertions multi-lignes. Les développeurs doivent éviter de s'appuyer sur LAST_INSERT_ID() pour déterminer les ID spécifiques des lignes insérées dans de tels scénarios. Des approches alternatives pour suivre ou accéder aux ID de ligne dans les insertions sur plusieurs lignes doivent être envisagées.

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