|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : mars 2002 Messages : 323 ![]() |
Bonjour, je souhaiterai savoir s'il est possible de récupérer la valeur générée par postgres, dans le cas d'une clef primaire serial.
... et ceci au travers d'une connexion JDBC d'un programme Java. Merci d'avance Thomas
__________________
creapage.net |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Bonjour,
Dans la même transaction et après ta requête INSERT, lance la requête : Code :
SELECT currval('nom_de_la_sequence') AS nouv_id;
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : mars 2002 Messages : 323 ![]() |
Ok merci beaucoup. Du coup j'ai une question de newbie : comment puis-je déterminer le nom de la séquence ? Il me le donne au moment de la création de la table c'est ça ? Mais y-a-t'il un moyen de le déterminer à postériori ?
__________________
creapage.net |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : mars 2002 Messages : 323 ![]() |
Et dans le cas d'accès concurrent, y-a-t'il un risque que la valeur soit périmée quand je la lis ? Ou bien le fait d'y accéder dans la même transaction que l'insert me garantie que ça sera la bonne valeur ?
__________________
creapage.net |
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 490 ![]() |
Citation:
Citation:
Citation:
- currval() renvoie une erreur si nextval() n'a pas été appelé au préalable dans la même session. En l'appelant après un INSERT, je suis sûr que nextval() a été appelé. - j'utilise essentiellement les SERIAL comme clés étrangères pour des relations maître/détails. Après l'INSERT initial dans la table maître suivront vraisemblablement des INSERT dans les tables détails avec la valeur renvoyée par currval(). En plaçant le tout dans une transaction, je m'assure de la consistence et de la robustesse de ma base. Un point important : il ne peut pas y avoir de rollback sur un nextval().
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|||
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : mars 2002 Messages : 323 ![]() |
Merci infiniment GrandFather !!!
__________________
creapage.net |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com