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

Requêtes PostgreSQL Discussion :

RETURNING ID et TRANSACT


Sujet :

Requêtes PostgreSQL

  1. #1
    gallab
    Invité(e)
    Par défaut RETURNING ID et TRANSACT
    Bonjour,

    Je souhaite faire une requête d'insert qui comporte un retour sur les identifiants nouvellement insérés.

    Voilà la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table(operateur) VALUES ('tata') ,('toto') RETURNING id;
    je souhaite exécuter ma requête dans une transaction, mais curieusement dans ce cas je n'arrive plus à récupérer les ID des enregistrements insérés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BEGIN TRANSACTION;
    INSERT INTO table(operateur) VALUES ('tata') ,('toto') RETURNING id; 
    END TRANSACTION;
    Je ne vois pas trop d'où cela peut venir, avez vous une idée ?

    Merci d'avance
    cordialement,
    Gallien LABEYRIE

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Etre dans une transaction ou non ne change rien à RETURNING
    Exemple:

    
    test=> create table trans(id serial,op text);
    NOTICE:  CREATE TABLE will create implicit sequence "trans_id_seq" for serial column "trans.id"
    CREATE TABLE
    test=> begin;
    BEGIN
    test=> insert into trans(op) values('ab'),('cd') returning id;
     id 
    ----
      1
      2
    (2 rows)
    
    INSERT 0 2
    
    test=> commit;
    COMMIT
    

  3. #3
    gallab
    Invité(e)
    Par défaut
    Merci pour ta réponse, je trouve en effet curieux que la transaction puisse masquer les ids retournés.
    Malheureusement je n'y arrive toujours pas! Ni sur PGAdmin, ni sur mon script PHP.
    Je pense que mon problème vient plutôt du script censé recupérés les identifiants des enregistrements créé mais je ne vois pas du tout d'où cela peut venir car cela reste ultra basique du genre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $result = pg_query($sql);
    if($result)
    {
      while($row = pg_fetch_assoc($result))
      {  
         echo $row['id'];
      }
    }

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Ca ne dit pas ce que ça fait à l'exécution.
    Ca ne rentre pas dans le IF? Ca ne rentre pas dans le while?
    Ca affiche quelque chose ou rien?

    Eventuellement essaye print_r($row) pour voir toute la ligne renvoyée

Discussions similaires

  1. [2008 R2] Returned message "No transaction is active."
    Par DevDX dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/03/2012, 12h53
  2. gestion d'erreur et de transactions....
    Par Dge dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/02/2006, 22h20
  3. Apropos des Transactions au sein d'un Stored Procedure
    Par Sarbacane dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 16/11/2004, 08h21
  4. [PostgreSQL]transactions
    Par adri1 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/04/2003, 14h37
  5. Transaction avec DoCmd.runsql ???
    Par Gandalf24 dans le forum VBA Access
    Réponses: 29
    Dernier message: 11/02/2003, 20h35

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