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

Développement de jobs Discussion :

Postgresql : pb de select après update


Sujet :

Développement de jobs

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut Postgresql : pb de select après update
    Bonjour,

    J'effectue un chargement d'un fichier avec tos dans une base postgres.
    Ce chargement insert d'abord dans une table puis dans une autre.
    Les données insérées dans ma deuxième table sont liées aux données insérées dans la première (bref une association toute bête)
    Pour ce faire :
    1/ j'insère dans ma première table (tPostgresqlOutput)
    2/ je recherche l'id de la donnée insérée par un select (tPostgresqlInput)
    3/ je jointure l'id a mon flux de données (tMap)
    4/ j'insert dans ma deuxième table avec l'id qui va bien.
    A notre que je réutilise la même connexion pour les 4 étapes. Ma connexion est en autocommit.

    Mon problème et que je n'arrive pas a résoudre l'id en étape 2 car la donnée insérée n'est pas trouvée. Du coup je ne peux insérer dans ma deuxième table.
    Par contre si je relance mon job, l'insertion 4 marche a la deuxième itération.

    En clair, le sélect ne vois pas l'insert qui viens juste d'être insèré. comme si cela était fait dans des connexions différentes non commitées.

    Cette problématique étant Classique, je passe sans doute a coté d'un truc évident. Cela serait sans doute plus simple de récupérer l'id directement a l'insert mais je n'ai pas trouve comment faire cela.

    Merci de vos eclairages

  2. #2
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2011
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2011
    Messages : 201
    Points : 352
    Points
    352
    Par défaut
    Bonjour,

    Nous avons eu la même problématique, cf.
    http://www.developpez.net/forums/d10...uto-increment/

    Nous n'avons pas trouvé de meilleur moyen que la procédure stockée.

    Je serai très intéressé par de meilleures réponses.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    Mon problème est un peut différent dans le sens que j'arrive "en théorie" a récupérer l'id du row insèré (sans passer par tLastInsertedId mais en recherchant l'id dans l'étape suivante de mon flux... ) le problème est qu'il semble que le sélect ne vois pas l'insert qui viens d'avoir lieu.

    En clair si j'insert X dans la table A et que je sélect id de la table A where X immédiatement apres, la ligne n'est pas trouvée. Par contre si je fait sélect id de A where X dans un autre job, je trouve ma ligne...

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    En fait, il semble que tous les tPosgresqlInput soient chargés au démarrage de mon flux.... du coup les données insérées dans mon process ne sont pas vu dans mes maps...
    comme on le vois sur le screenshot, la table parts est chargé avant que TMap_7 n'ai eu le loisir d'insérer dans la table parts

    La question est : comment faire pour que les tPostgresInput ne soient chargé que lors de l'execution du tMap_3
    Images attachées Images attachées  

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Un lien de type "onSubjobOK" entre l'insertion et la lecture devrait garantir que le second tPostgreSQLInput sera bien exécuté après l'insertion de la ligne, et donc qu'il récupérera le bon ID.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

Discussions similaires

  1. [MySQL] select après un update
    Par sub-0 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/06/2009, 18h42
  2. [POSTGRESQL] Requete SQL SELECT
    Par angusyoung34 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/02/2006, 09h30
  3. [Verrou] SELECT FOR UPDATE
    Par e1lauren dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 13/10/2005, 17h06
  4. select apres submit
    Par mereyj dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 10/09/2005, 15h50
  5. concerver items d'un select apres rafraichissment
    Par menoce dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/08/2005, 15h41

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