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

Langage SQL Discussion :

Problème avec un update dans une requête


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Problème avec un update dans une requête
    Bonjour,

    Alors j'ai bug tout bizarre avec une "simple" requête update.
    J'ai un serveur avec windows 2003 et sql server 2000 SP4.

    Donc voici mon soucis : J'ai une table avec une plus d'une vingtaine de champ donc quelques uns qui sont de booleens.
    Dans ma requête d'update, je ne touche jamais à mes champs booleen car je veux qu'ils gardent leurs valeurs précédemment affectées. Il y a un where dans ma requete pour que ça pointe que sur un seul enregistrement.

    Si je lance ma requete d'update sur moins de vingt champs de ma table, alors mes champs booléens ne changent pas de leurs valeurs précédentes.
    Par contre, et ça je ne l'explique pas si je met plus de vingt champs dans ma requete update, mes champs booleens (qui ne sont pas dans la requete update) passent tous à 0, alors qu'il devraient garder leurs valeurs à 1 si ils y étaient précédemment comme ils ne sont pas dans ma requête.

    Donc voila j'espère avoir bien transcris mon problème.
    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Salut,
    Il faudrait plus de précision sur la structure de la table, et la requête d'update utilisée, merci.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Donc voici la structure de ma table :
    - une clé primaire (uniqueidentifier(16))
    - champ1, champ2, [...], champ25 (nvarchar)
    - bool1, bool2, [...] bool5 (bit)

    et ma requete qui fonctionne:

    UPDATE TABLE1 SET champ1='xx', champ2='xx',[...], champ20='xx' where PK='xx'

    Je ne touche pas aux champs bool1, bool2... dans ma requête.

    celle qui bug et qui me remet tous les champs bool à 0 :

    UPDATE TABLE1 SET champ1='xx', champ2='xx',[...], champ20='xx',champ21='xx, champ22='xx' where PK='xx'

    Donc dès que je met à jour plus de 20 champs dans ma requête tous mes champs booléens de ma ligne mise à jour passe à 0.
    J'ai essayé de changer la valeur par défaut des booléens mais cela n'y fait rien.

    Je comprend pas on dirait que c'est le max de champs que l'on peut mettre à jour d'un coup car si je fais cette requete les booléens gardent bien leur valeur :
    UPDATE TABLE1 SET champ1='xx', champ2='xx',[...], champ20='xx' where PK='xx'
    UPDATE TABLE1 SET champ21='xx, champ22='xx' where PK='xx'

    Voila

  4. #4
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Non, je crois pas que ce soit à cause du nombre de champs; exécutes-tu cetet requête a partir d'un programme? si oui, essaie dans l'analyseur voir et si celà persiste fais un set aussi des valeurs booléennes

  5. #5
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Non, non je l'exécute dans l'analyseur de requête de SQL server.

    Sinon pour ta deuxième solution, oui ça marche si je met mes valeurs booleenes dans le SET. Le problème c'est que ça m'oblige à faire un SELECT avant pour récupérer mes valeurs booléenes pour les mettre en variable. Donc si je peu trouver pourquoi j'ai ce bug, I will be happy lol

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Tes booléens ne sont pas des champs calculés ou des trucs de ce genre ?

    Donne nous carrément le copier/coller de la définition de la table et de la requête...

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  7. #7
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Disons que c'est dans mon code, leur valeur est changée avant dans une autre page, donc pas de lien avec cette requete la. Ca reste juste un simple update sur quelques champs d'une ligne dans une table. Mais bon arrivé à une certains nombre de champs updaté ça changent tous mes booléens à 0. Je te met ma table en pièce jointe.

    Une requete par exemple :

    UPDATE Main SET TID='ACX', CALLDATE='11/08/2008', CALLTIME='15:00:00', NAME='TEST10', TITRE='M.', COMP='TEST10', DPT='53', PHONE='02020202', PHONE2='', FAX='', CAT='P', PRODF='hgvkhg', PROD='gjvfkj', PRODE='', DEF='jhgftyfg', DEF2='', DEF3='', CALLMIN='41', STATUS='S', SOLVE='1', REACTIVITE='10' WHERE CALLKEY='{0000000000001}';

    Sur celle-ci tous les booléens, process,alertfa... vont ce mettre à 0

    Alors qu'avec cette requête :

    UPDATE TABLE SET TID='ACX', CALLDATE='11/08/2008', CALLTIME='15:00:00', NAME='TEST10', TITRE='M.', COMP='TEST10', DPT='53', PHONE='02020202', PHONE2='', FAX='', CAT='P', PRODF='hgvkhg', PROD='gjvfkj', PRODE='', DEF='jhgftyfg', DEF2='', DEF3='', CALLMIN='41', STATUS='S', WHERE CALLKEY='{0000000000001}';

    Les booléens stack, solve qui peuvent être à 1 vont le rester

    Je suis désolé j'arrive pas à insérer la pièce jointe donc je t'écris vite fait la table

    CALLKEY (uniqueidentifier (16)) PROD varchar(50)
    TID varchar (3) PRODF varchar(50)
    CALLDATE smalldatetime PRODE varchar(50)
    CALLTIME smalldatetime DEF varchar(255)
    CALLDATE1 smalldatetime DEF2 varchar(255)
    CALLTIME1 smalldatetime DEF3 varchar(255)
    DPT varchar (5) CALLMIN bigint(8)
    COMP varchar (100) STATUS varchar(100)
    NAME varchar (100) STACK bit(1)
    TITRE varchar (6) PROCESS bit(1)
    PHONE varchar (32) SOLVE bit(1)
    PHONE2 varchar (32) REACTIVITE int(4)
    FAX varchar (32) URGENT bit(1)
    CAT varchar (2) COMPTEUR_ID int(4)
    NOTE_STD varchar(500) ALERTFA bit(1)

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je ne sais pas si c'est faisable en SQLServer mais comme dans la requête qui foire tu imposes une valeur à SCORE qui est un booléen, n'aurais-tu pas une contrainte sur la table qui impose que les colonnes de type bit passent à 0 quand Score passe à 1 ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut,
    Merci pour vos réponses.
    Mais hélas non je n'ai pas de contraintes de ce type. Si je met un autre champ à jour à la place du booléen, j'obtiens le même résultat. Je ne pense pas que ça vienne de la.

    bon week end

Discussions similaires

  1. problème avec l'apostrophe dans une requête
    Par mika0102 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/03/2019, 16h51
  2. Problème avec les update dans une BDD
    Par P.O.K dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/06/2011, 17h07
  3. Problème avec des guillemets dans une requête
    Par clairetj dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/04/2011, 11h39
  4. Problème de 0 avec un Count dans une requête
    Par Exentius dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/12/2010, 08h52
  5. Problème de Order by dans une requête
    Par showa dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/08/2004, 15h40

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