Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/05/2007, 20h09   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 49
Points : 7
Points : 7
Par défaut comment recuperer la derniere clé primaire générée par AUTO_INCREMENT ?

Bonjour,
Je travaille sur une application en JSP et PostgreSQL, je veux savoir est-ce qu'il y a un moyen pour récuperer la derniere valeur générée par AUTO_INCREMENT dans une requete insert
Merci.
giannichedda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 22h07   #2
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
Bonjour,

tu peux utiliser la syntaxe (depuis 8.2) RETURNING :

INSERT INTO matable (monchamp) VALUES ('lmm') RETURNING monid;

sinon juste apres ton insert tu relance une autre requete :
SELECT currval('monid');

mais la 1ere solution est tout de meme préférable.
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 14h47   #3
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
Code :
SELECT currval(pg_get_serial_sequence('mytable', 'mycolumn'))
ça te retourne, tu récupére la séquence lié à ton champ auto_increment d'une table. Puis avec currval la derniére valeur retourné par cette sequence.
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 16h59   #4
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Citation:
Envoyé par deY!
Code :
SELECT currval(pg_get_serial_sequence('mytable', 'mycolumn'))
ça te retourne, tu récupére la séquence lié à ton champ auto_increment d'une table. Puis avec currval la derniére valeur retourné par cette sequence.
Si ce n'y est pas déjà, à mettre d'urgence dans la FAQ!!!!
Merci de l'astuce !!!
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 21h30   #5
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
A force de passer sa vie dans la documentation on en trouve des choses interressantes
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 22h29   #6
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
Merci deY!

je connaissais pas cette fonction pg_get_serial_sequence

je l'ajouterais dans la Faq
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 23h48   #7
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
Elle ne fonctionne qu'à partir de postgres 8.0

De plus depuis 8.1 il y a aussi lastval(), qui retourne la valeur de la derniere sequence utilisé. Ca évite de nommer la sequence, la table et a colonne.

EDIT : je viens de tomber dessus, peut etre que c'est mieux, j'ai pas testé dans mes appli cette solution
__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h53.


 
 
 
 
Partenaires

Hébergement Web