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 :

UPDATE ne fonctionne pas POSTGRESQL


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Février 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2016
    Messages : 1
    Par défaut UPDATE ne fonctionne pas POSTGRESQL
    Bonjour,

    Je suis débutant dans ce domaine mais j'ai un souci vraiment "bête" sur un update d'une table à partir d'un table temporaire que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE CrmOutgoingLead ld SET iBehavioralScore = temp.iBehavioralScore, iDemographicScore = temp.iDemographicScore, tsLastModified = getDate()   
        FROM (SELECT  tmp.iOutgoingLeadId, tmp.iBehavioralScore, tmp.iDemographicScore 
    			FROM tempTable tmp 
    			ORDER BY tmp.iOutgoingLeadId 
    			LIMIT 25000 OFFSET 0) temp
                WHERE (temp.iOutgoingLeadId = ld.iOutgoingLeadId 
    			AND temp.iBehavioralScore <> ld.iBehavioralScore )
    iOutgoingLeadId étant une clé de réconciliation ici. Lorsque je retire AND temp.iBehavioralScore <> ld.iBehavioralScore cela fonctionne correctement mais lorsque je l'ajoute l'update ne se fait pas, pourtant voici les données avant update :

    table CrmOutgoingLead iOutgoingLeadId: 1320001100 iBehavioralScore : 0 iDemographicScore : 0
    table tempTable iOutgoingLeadId: 1320001100 iBehavioralScore : 80 iDemographicScore : 20
    On voit bien que iBehavioralScore des deux tables sont différents, il est censé mettre à jour .. Quand je change mon LIMIT à 1 cela fonctionne aussi , je sais que le souci vient de mon OFFSET car j'update par groupe de 25000 en bouclant. (la valeur de mon offset est dynamique).

    Merci pour votre aide les amis,

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 604
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Est ce que ld.iOutgoingLeadId est une clef unique ?
    Dans le cas contraire, vous risquez de faire des update en cascade d'une même ligne de la table CrmOutgoingLead

    De plus je suppose que vous avez testé temp.iBehavioralScore <> ld.iBehavioralScore pour éviter des mises à jour inutile, mais ce-faisant, vous compromettez l'usage éventuel d'un index (prédicat <> non sargable).
    Attention donc, il est parfois préférable de mettre à jour en masse, sauf si par exemple les màj sont auditées, auquel cas il faut faire autrement, un test d'existence avec where (not) exists par exemple.

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,
    Citation Envoyé par totti78 Voir le message
    iBehavioralScore : 0 
    Est-ce bien 0, ou est-ce NULL.
    Car si c'est NULL, c'est normal que ça ne fonctionne pas : NULL n'est pas différent de 80.

Discussions similaires

  1. [MySQL] Update ne fonctionnant pas à la première exécution
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/11/2006, 18h25
  2. Chaîne SQL update ne fonctionne pas (faut-il l'imbriquer ?"
    Par beegees dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/10/2006, 11h22
  3. UPDATE ne fonctionne pas ?
    Par crocodile dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/07/2006, 16h50
  4. Requete UPDATE ne fonctionnant pas
    Par Yanmeunier dans le forum Access
    Réponses: 3
    Dernier message: 12/04/2006, 17h19
  5. Microsoft Update ne fonctionne pas sous Win 2000 SP4
    Par botakelymg dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 03/10/2005, 05h32

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