Question

Sous mysql, comment puis-je obtenir la clé primaire utilisée pour une opération d'insertion, lorsqu'elle est auto-incrémentée.

En gros, je souhaite que la nouvelle valeur auto-incrémentée soit renvoyée à la fin de l'instruction.

Merci!

Était-ce utile?

La solution

Votre commentaire de clarification indique que vous souhaitez vous assurer que LAST_INSERT_ID () ne donne pas un résultat erroné si un autre INSERT survient. Soyez assuré que vous pouvez utiliser LAST_INSERT_ID () indépendamment de toute autre activité simultanée. LAST_INSERT_ID () ne renvoie que l'ID le plus récent généré lors de la session en cours.

Vous pouvez l'essayer vous-même:

  1. Ouvrez deux fenêtres shell, exécutez mysql client dans chacun et se connecter à base de données.
  2. Shell 1: INSERT dans une table avec un Touche AUTO_INCREMENT.
  3. Shell 1: SELECT LAST_INSERT_ID (), voir le résultat.
  4. Shell 2: INSERT dans la même table.
  5. Shell 2: SELECT LAST_INSERT_ID (), voir résultat différent de shell 1.
  6. Shell 1: SELECT LAST_INSERT_ID () encore une fois, voir une répétition de plus tôt résultat.

Si vous y réfléchissez, c’est le seul moyen qui a du sens. Toutes les bases de données prenant en charge les mécanismes d'incrémentation automatique doivent agir de cette manière. Si le résultat dépend d'une situation de concurrence critique avec d'autres clients, éventuellement INSERT, il n'y aurait alors aucun moyen fiable d'obtenir la dernière valeur d'ID insérée dans votre session actuelle.

Autres conseils

Les documents MySQL décrivent la fonction: LAST_INSERT_ID ()

[sélectionnez max (nom_colonne_de_clé primaire) dans nom_table] Ahhh pas nécessairement. Je ne suis pas un gars de MySQL, mais il existe un moyen spécifique d'obtenir le dernier identifiant inséré pour la dernière action terminée qui sont un peu plus robustes que cela. Que se passe-t-il si un insert s'est produit entre vous écrivez dans la table et l'interrogez? Je le sais parce que ça m'a piqué il y a bien des lunes (alors oui, ça arrive). En cas d'échec, lisez le manuel: http: // dev.mysql.com/doc/refman/5.0/fr/getting-unique-id.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top