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

Comment `LAST_INSERT_ID()` fonctionne-t-il avec les instructions `INSERT` à enregistrements multiples dans MySQL ?

DDD
DDDoriginal
2024-11-17 10:45:04333parcourir

How Does `LAST_INSERT_ID()` Work with Multiple-Record `INSERT` Statements in MySQL?

Comportement LAST_INSERT_ID() avec des instructions INSERT à enregistrements multiples dans MySQL

La fonction LAST_INSERT_ID() de MySQL récupère l'ID généré pour la dernière ligne insérée. Ce comportement peut différer lors de l'utilisation d'une instruction INSERT à enregistrement unique par rapport à une instruction INSERT à enregistrements multiples.

Instructions INSERT à enregistrement unique

Avec un INSERT à enregistrement unique instruction, LAST_INSERT_ID() renvoie l'ID généré comme prévu, correspondant au dernier enregistrement inséré.

Instructions INSERT à enregistrements multiples

Cependant, lors de l'utilisation d'une instruction INSERT à enregistrements multiples, LAST_INSERT_ID() renvoie l'ID correspondant à la première ligne insérée. Ce comportement est explicitement documenté dans la documentation MySQL, soulignant qu'il permet de reproduire facilement la même instruction INSERT sur un autre serveur.

Exemple

Considérez l'INSERT à enregistrements multiples suivant déclaration :

INSERT INTO people (name,age)
VALUES ('William',25), ('Bart',15), ('Mary',12);

Après l'exécution de cette instruction, LAST_INSERT_ID() renverra 1, pas 3, indiquant l'ID généré pour le premier enregistrement (« William ») inséré.

Raisonnement

Ce comportement garantit la cohérence des données entre les serveurs. Si LAST_INSERT_ID() renvoyait l'ID de la dernière ligne insérée dans une instruction à enregistrements multiples, l'instruction INSERT serait non reproductible sur d'autres serveurs qui attribuent des ID différents aux mêmes lignes.

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