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 :

Obtenir la valeur d'un SERIAL: équivalent à mysql_insert_id


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 89
    Points : 67
    Points
    67
    Par défaut Obtenir la valeur d'un SERIAL: équivalent à mysql_insert_id
    Bonjour.

    Avec MySQL, lorsqu'on souhaite obtenir la valeur d'une variable AUTO_INCREMENT fraichement insérée, on utilise mysql_insert_id pour récupérer la valeur ainsi générée.

    Comment faire avec Postgresql pour récupérer la valeur d'une variable SERIAL issue de l'execution de la requete réalisée avec la connexion en cours (car entre temps d'autres utilisateurs ont pu insérer des enregistrements dans la table)?

    Merci.

  2. #2
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Bonjour

    Vu dans la doc
    currval
    Return the value most recently obtained by nextval for this sequence in the current session. (An error is reported if nextval has never been called for this sequence in this session.) Notice that because this is returning a session-local value, it gives a predictable answer whether or not other sessions have executed nextval since the current session did.

    Traduction
    Renvoit la valeur la plus récemment obtenue par nextval pour cette séquence dans la session actuelle. (Une erreur est rapportée si nextval n'a jamais été appelé pour cette séquence dans cette session.) Notez que, parce qu'il renvoie une valeur locale à la session, il donne une réponse prévisible même si les autres sessions exécutent nextval entre temps.
    Il faut l'utilisé comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT currval('nom_de_sequence');
    KrysKool
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  3. #3
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    J'ai écris un petit tutoriel sur les séquences :

    http://dgriessinger.developpez.com/p...sql/sequences/

    bonne lecture
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 89
    Points : 67
    Points
    67
    Par défaut
    Merci à vous deux pour ces infos, et félicitations pour ce tutoriel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] ACCESS - Impossible de récupérer la valeur de @@identity (équivalent mysql_insert_id)
    Par FredFrance21 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/10/2008, 14h40
  2. Réponses: 10
    Dernier message: 10/08/2006, 15h44
  3. Réponses: 13
    Dernier message: 06/07/2006, 11h25
  4. Réponses: 5
    Dernier message: 30/05/2006, 12h29
  5. [MySQL] Obtenir la valeur de l'auto-increment lors d'une insertion
    Par yazerty dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/01/2006, 15h18

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