2010-05-10 22 views
1

J'ai une table avec un ID auto-incrémenté. Après avoir inséré une nouvelle ligne, j'aimerais récupérer le nouvel identifiant.MySQL, C++: Récupération de l'ID à incrémentation automatique

J'ai trouvé un article qui utilisait la fonction MySQL LAST_INSERT_ID(). L'article dit de créer une nouvelle requête et le soumettre.

J'utilise MySQL Connecteur C++, Windows XP et Vista, et Visual Studio 9.

Voici mes questions:

  1. Y at-il une API, pour le connecteur, qui chercher l'ID de l'enregistrement ?
  2. Le jeu de résultats, après insertion/ajout , contient-il le nouvel ID? Le LAST_INSERT_ID est spécifique à MySQL . Existe-t-il une méthode SQL standard pour obtenir le nouvel ID?
+0

Comme vous l'avez dit. Vous pouvez utiliser une requête SELECT LAST_INSERT_ID() 'au lieu d'appeler la fonction de bibliothèque. –

+0

@Alexandre Jasmin: Le connecteur C++ a-t-il la fonction de bibliothèque? –

+0

Je ne vois pas 'mysql_insert_id' utilisé n'importe où dans l'arborescence des sources du connecteur. Je suppose que ce ne serait pas trop difficile d'y ajouter du soutien si vous le voulez vraiment. –

Répondre

1
  1. Il ne ressemble pas - dans l'API C, vous avez mysql_insert_id() pour cela, mais il ne semble pas être utilisé dans le connecteur C++, et ne semble pas mettre en œuvre la Méthode getGeneratedKeys de l'API JDBC (Cependant, je n'utilise pas ce connecteur moi-même, donc il me manque peut-être quelque chose d'évident ...).
  2. Non, il n'y a pas de jeu de résultats à partir d'un INSERT.
  3. n ° Supposedly, DB2 is the only one qui suit ce que dit la norme SQL à propos des clés générées automatiquement; tout le monde le fait différemment (à la fois de la norme et de l'autre).