p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité régulier
    Homme Profil pro
    Géomaticien / Développeur
    Inscrit en
    juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 849
    Points : 2 817
    Points
    2 817

    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
    Géomaticien / Développeur
    Inscrit en
    juin 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 849
    Points : 2 817
    Points
    2 817

    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