7
votes

php mysql_inssert_id sur plusieurs rangées?

est-il possible d'obtenir les identifiants automatiques incrémentés d'une requête qui insère plusieurs rangées? Par exemple:

Insérer des valeurs de table (COL1, COL2) (1, 2), (3, 4), (5, 6);

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?

merci


0 commentaires

3 Réponses :


4
votes

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.


2 commentaires

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).



4
votes

http: // dev .MYSQL.com / DOC / REFMAN / 5.0 / FR / INFORMATION-FONCESS.HTML # FONCTION_LAST-INTERS-ID

Si vous insérez plusieurs lignes à l'aide d'un seul Insérer une instruction , last_insert_id () renvoie la valeur générée pour la première ligne insérée uniquement.

Donc, non, vous ne pouvez pas obtenir tous les identifiants facilement, mais vous pouvez supposer qu'ils sont continus. Vous devriez NE JAMAIS sur des hypothèses cependant. On dirait que vous voulez deviner le prochain ID 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. :)


0 commentaires

0
votes

Pour obtenir le prochain identifiant auto_incrènement, vous pouvez utiliser: xxx

Cependant, vous ne voulez peut-être pas compter sur le auto_incrènement ID ou last_insert_id () 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 () 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 () de la personne A ou B?

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.


0 commentaires