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

MS SQL Server Discussion :

impossible de mettre à jour une colonne.


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 56
    Points : 43
    Points
    43
    Par défaut impossible de mettre à jour une colonne.
    Bonjour,

    Je dois faire un update avec un subquery
    mais j'obtiens une erreur de type "Column cannot be updated"

    Quelqu'un pourrai m'aider, svp?

    query :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE val
    SET val.nbpers =
              (SELECT COUNT(f.NOPERS) AS Expr1
                FROM Firme f
                WHERE (f.id = val.id))
    FROM valeur val
    P.S : SqlServer 2005

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH
    	CTE_NOMBRE_PERSONNES (id, nbPers) AS
    	(
    		SELECT id, COUNT(NOPERS) AS nbPers
    		FROM dbo.Firme
    		GROUP BY id
    	)
    UPDATE dbo.val
    SET nbpers = CTE_NOMBRE_PERSONNES.nbPers
    FROM dbo.val AS V
    JOIN CTE_NOMBRE_PERSONNES ON V.id = CTE_NOMBRE_PERSONNES.id
    Votre code contient une jointure triangulaire ...

    @++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 56
    Points : 43
    Points
    43
    Par défaut
    ça me renvoie l'erreur suivant :

    'Common Table Expression' support not available in this server version.
    Column or expression 'nbPers' cannot be updated.

  4. #4
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Hello,

    as tu les droits nécessaires pour écrire dans la DB ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 56
    Points : 43
    Points
    43
    Par défaut
    oui biensur,
    j'ai essayé avec un update tout "bête" pour
    voir s'il n'y a pas de problème sur le champs
    du style "update val set nbpers=5" et ça marche nikel...
    Donc je ne vois pas c'est quoi.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE val
    SET val.nbpers = f.Expr1
    FROM valeur val
    INNER JOIN (SELECT COUNT(NOPERS) AS Expr1 FROM Firme) f
    	ON f.id = val.id
    Y a pas de quoi...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 56
    Points : 43
    Points
    43
    Par défaut
    cmako, ça donne la même erreur : "Column cannot be updated"

    J'ai trouvé, c'est un problème de sqlserver 2005 apparement car
    quand j'utilise "New Query" tous les query's fonctionnent et dans mon code
    asp.net aussi, donc résolu !

    Il n'y a que lorsque qu'on clique sur le petit bouton "sql" dans sqlserver 2005
    que ça ne fonctionne pas! bizarre...

    Conseil : toujours utiliser "New Query" !

    Merci à tous pour vos solutions !

    a+

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE val
    SET val.nbpers = f.Expr1
    FROM valeur val
    INNER JOIN (SELECT id, COUNT(NOPERS) AS Expr1 FROM Firme GROUP BY id) f
    	ON f.id = val.id

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre à jour une colonne à partir d'une autre
    Par Peanut dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/06/2011, 18h19
  2. Impossible de mettre à jour une combobox
    Par nislog dans le forum Visual Studio
    Réponses: 2
    Dernier message: 01/06/2011, 13h18
  3. Mettre à jours une colonne CLOB dans une tabel
    Par proDZ dans le forum Oracle
    Réponses: 4
    Dernier message: 20/08/2009, 11h53
  4. ADO- Impossible de mettre à jour une table sans primary key.
    Par Mr_Welby dans le forum Accès aux données
    Réponses: 3
    Dernier message: 26/05/2007, 14h26
  5. impossible de mettre à jour une liste déroulante
    Par nicolovitch dans le forum Access
    Réponses: 3
    Dernier message: 02/08/2006, 11h31

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