IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

comment recuperer la derniere clé primaire générée par AUTO_INCREMENT ? [FAQ]


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 49
    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.

  2. #2
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    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.

  3. #3
    Membre chevronné Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre émérite Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Par défaut
    Citation Envoyé par deY!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!!

  5. #5
    Membre chevronné Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Par défaut
    A force de passer sa vie dans la documentation on en trouve des choses interressantes

  6. #6
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    Merci deY!

    je connaissais pas cette fonction pg_get_serial_sequence

    je l'ajouterais dans la Faq

Discussions similaires

  1. Récupérer la dernière ligne insérée dans une table
    Par sou_rif dans le forum Développement
    Réponses: 7
    Dernier message: 04/09/2022, 14h11
  2. recuperer la derniere cle primaire SERIAL ajouter
    Par oniric dans le forum Débuter
    Réponses: 2
    Dernier message: 21/04/2009, 21h37
  3. Comment recuperer le dernier mot d'une ligne
    Par mashu dans le forum Langage
    Réponses: 3
    Dernier message: 19/11/2008, 10h05
  4. Comment recuperer le dernier champs (split)
    Par aikinhdo dans le forum Langage
    Réponses: 3
    Dernier message: 30/04/2007, 17h33
  5. Réponses: 2
    Dernier message: 03/10/2006, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo