est-il possible d'obtenir les identifiants automatiques incrémentés d'une requête qui insère plusieurs rangées? Par exemple: p>
Insérer des valeurs de table (COL1, COL2) (1, 2), (3, 4), (5, 6); P>
de manière alternative, existe-t-il un moyen de trouver la prochaine valeur d'incrémentation automatique sans rien insérer dans la table? P>
merci p>
3 Réponses :
Autant que je sache Auto_Increment ne remplit pas les lacunes entre les identifiants et l'opération est atomique. Donc, vous pouvez supposer qu'ils seront de suite. P>
MySQL prend en charge les compensations d'incrément automatique (celles-ci est plus courante dans la réplication) afin que les identifiants consécutifs ne soient pas une garantie dans tous les environnements.
Vous pouvez assumer en toute sécurité des identifiants consécutifs sous le Circonstances suivantes dans MySQL: Vous utilisez Innodb, Innodb_autoinc_Lock_Mode est défini sur 0 ou 1 (par défaut).
Si vous insérez plusieurs lignes à l'aide d'un seul
Insérer une instruction code>,
last_insert_id () code> renvoie la valeur générée pour la première ligne insérée uniquement. P> blockQuote>
Donc, non, vous ne pouvez pas obtenir tous les identifiants facilement, mais vous pouvez supposer em> qu'ils sont continus. Vous devriez
NE JAMAIS STRUT> sur des hypothèses cependant. On dirait que vous voulez deviner le prochain ID code> qui viendrait après votre insertion en vrac? Si oui, ne tentez même pas cela et pensez à une autre façon de faire ce que vous voulez faire. :) p>
Pour obtenir le prochain identifiant auto_incrènement, vous pouvez utiliser: Cependant, vous ne voulez peut-être pas compter sur le Une méthode pour surmonter ce problème consiste à utiliser un identifiant "prédéfini" ou GUID En plus ou à la place de l'ID incrémenté automatique. P> P> auto_incrènement code> ID ou
last_insert_id () code> dans la logique de votre code. Par exemple, disons deux personnes, A & B, ajoutant des questions à votre DB à proximité du même moment et que vous utilisez le
last_insert_id () code> pour déterminer l'ID de la question de la personne. Que se passe-t-il quand ils soumettent tous les deux leur question en même temps? Est le
last_insert_id () code> de la personne A ou B? P>