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!