Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité régulier
    Homme Profil pro Gallien LABEYRIE
    Géomaticien / Développeur
    Inscrit en
    juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Nom : Homme Gallien LABEYRIE
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Géomaticien / Développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : juin 2010
    Messages : 13
    Points : 8
    Points
    8

    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 :
    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 :
    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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 832
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 832
    Points : 2 768
    Points
    2 768

    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
    Invité régulier
    Homme Profil pro Gallien LABEYRIE
    Géomaticien / Développeur
    Inscrit en
    juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Nom : Homme Gallien LABEYRIE
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Géomaticien / Développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : juin 2010
    Messages : 13
    Points : 8
    Points
    8

    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 :
    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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 832
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 832
    Points : 2 768
    Points
    2 768

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •