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

SQL Procédural MySQL Discussion :

UPDATE d'une table à partir d'une vue [MySQL-5.7]


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 54
    Points : 24
    Points
    24
    Par défaut UPDATE d'une table à partir d'une vue
    Bonsoir,

    J'ai une TABLE a et une VIEW z.
    Je voudrais faire un UPDATE de a à partir d'une donnée de z.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    UPDATE 
        a
    SET a.nb_CM =
        (SELECT 
             z.nb_CM
         FROM 
             z
         WHERE 
             z.insee = a.insee)
    WHERE a.nb_CM IS NULL
    Mais j'obtiens le message d'erreur suivant :
    #1443 - The definition of table 'z' prevents operation UPDATE on table 'a'.
    Comment puis-je m'en sortir, SVP ?
    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 111
    Points : 28 450
    Points
    28 450
    Par défaut
    Bonjour,

    Essaye d'ajouter un niveau de sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    UPDATE  a
    SET     a.nb_CM =
            (   SELECT  x.nb_CM
                FROM    (   SELECT  insee
                                ,   nb_CM
                            FROM    z
                        )   x
                WHERE   x.insee = a.insee
            )
    WHERE   a.nb_CM IS NULL
    ;
    L'optimiseur syntaxique de MySQL n'est pas très bon et ne comprendra pas la ruse

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 54
    Points : 24
    Points
    24
    Par défaut [MySQL-5.7] UPDATE d'une table à partir d'une vue
    Bjr,

    Effectivement la requête est débloquée mais elle n'UPDATE rien.
    0 ligne affectée. (traitement en 0.0052 seconde(s).)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2018
    Messages : 54
    Points : 24
    Points
    24
    Par défaut [MySQL-5.7] UPDATE d'une table à partir d'une vue
    Bon,

    J'ai renoncé à utiliser des Vues.
    J'ai créé les tables a et z correspondantes et ma 1 requête fonctionne correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    UPDATE 
        a
    SET a.nb_CM =
        (SELECT 
             z.nb_CM
         FROM 
             z
         WHERE 
             z.insee = a.insee)
    WHERE a.nb_CM IS NULL

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

Discussions similaires

  1. [2008] probleme update sur une vue
    Par minosys dans le forum Développement
    Réponses: 6
    Dernier message: 08/09/2014, 20h19
  2. update sur une vue
    Par lastrecrue dans le forum Débuter
    Réponses: 1
    Dernier message: 24/04/2009, 21h54
  3. UPDATE d'une vue
    Par infobugs36 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/10/2005, 17h39
  4. UPDATE : table à partir d'une autre
    Par Laura dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/10/2003, 21h34

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