J'ai une table de base de données A qui stocke des enregistrements, A une clé primaire (enregistrement) avec auto_increment, chaque fois que j'insère un enregistrement dans A, j'obtiens l'enregistrement inséré et le stocke dans une autre table maître.Obtention du dernier ID d'enregistrement inséré d'une table de base de données dans Java?
J'utilise une instruction select comme moi bientôt un insert en A pour obtenir RECORDID comme ceci:
select RecordID d'un ordre par RecordID 1 DESC LIMIT;
Mais je suis tombé sur un problème aujourd'hui, où dans deux dossiers ont été insérés (par différents threads) en même temps et je fini par stocker mal RecordID dans l'ID maître (même RecordID pour les deux txns)
J'ai entendu parler de Statement.getGeneratedKeys(), je voudrais savoir si cela aide vraiment à résoudre le problème. Ou quelle est la meilleure façon de gérer cela.
Si le pilote MySQL JDBC l'implémente. –
C'est vrai. Si le pilote JDBC ne le prend pas en charge, vous devez utiliser des méthodes spécifiques à la base de données pour obtenir l'ID. – kgiannakakis
@kgiannakakis - 'session.save (myTable)' ne retourne pas un 'int'. Cependant, elle renvoie java.io.serializable' et la méthode 'getGeneratedKeys()' n'est supportée par aucune implémentation des pilotes JDBC jusqu'à maintenant. Donc, aucun des deux cas que vous avez mentionnés ne sera aussi évident. Est-ce qu'ils fonctionnent vraiment? – Lion