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 :

Upgrader 2 tables en même temps


Sujet :

SQL Procédural MySQL

  1. #1
    HwRZxLc4
    Invité(e)
    Par défaut Upgrader 2 tables en même temps
    Bonjour,

    Je modifie une tables via un formulaire, et j'aimerais que quand on modifie cette tables que sa modifie aussi une colonne d'une autre table.

    Quelqu'un pourrait t-il m'aider, je fuine google mais je trouve pas grand choses de bien expliqué.

    Merci d'avance.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Je ne pense pas que ça puisse se faire en une seule et même requête, vu qu'un update ne peut porter que sur une seule table à la fois...
    Il va falloir passer par 2 requêtes successives...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    HwRZxLc4
    Invité(e)
    Par défaut
    hmmm, ok pour faire 2 requêtes, mais alors pour que le script exécute les 2 requêtes ?

    Désolé, je suis un peux perdu (

  4. #4
    HwRZxLc4
    Invité(e)
    Par défaut
    si je fais un truc comme sa ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$modifier = mysql_query($requete_insertion_demande);
    		$modifier = mysql_query($requete_insertion_demande2);
    Sa devrais aller non ?

  5. #5
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Tu ne précises pas quelle est ta version de MySQL... suivant la version, tu peux passer par la mise en place d'un trigger, qui se chargera automatiquement de la mise à jour de ton autre champ.

  6. #6
    HwRZxLc4
    Invité(e)
    Par défaut
    Version du client MySQL: 5.0.32

    Bon j'ai testé comme indiquer dans on précédent message, sa fonctionne, mais cette technique est t-elle fiable ?

  7. #7
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Si toute modification de cette table implique d'en altérer une autre, le mot magique serait effectivement Trigger.

    Sinon pour faire plusieurs modifications en garantissant l'intégrité du tout il faut aller voir InnoDB et les transaction, sinon il y a le risque qu'une raison X empèche la deuxième modification et entraine une incohérence.


    Il est également possible de modifier plusieurs tables en une seule requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE A JOIN B USING (id)
    SET A.nom='toto', B.nom='titi'
    WHERE [...]

  8. #8
    HwRZxLc4
    Invité(e)
    Par défaut
    hmmmm, je vais voir pour ta solution, donc la mienne est pas bonne alors ?

  9. #9
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Citation Envoyé par cobra-expert
    hmmmm, je vais voir pour ta solution, donc la mienne est pas bonne alors ?
    Dans ta solution, tu vas faire la 2ème requête qu'importe le résultat de la première. Il faudrait déjà tester le résultat de mysql_query(...).

    A partir du moment où tu as des outils (triggers ou transactions) qui te permettent de faire automatiquement ce travail, pour moi c'est autant de code en moins à implémenter dans ton application (et autant de bugs potentiels en moins).

  10. #10
    HwRZxLc4
    Invité(e)
    Par défaut
    sa marche pas trop, je capte pas ton code.

    J'ai 2 tables essais1 essais2

    Dans la table essais1, j'ai 20 chans

    Dans la table essais2, seul une entré sur les 10 m'intéresse.

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE essais1 JOIN essais2 USING (id)
    SET essais1.*='toto', essais2.monchan4='titi'
    WHERE [...]
    exacte ?

  11. #11
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Qu'essaies-tu de faire par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... essais1.*='toto' ...
    Il faut que tu précises la colonne à modifier !

  12. #12
    HwRZxLc4
    Invité(e)
    Par défaut
    ben le caractère * pour tout les champs de la table, non ?

  13. #13
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Citation Envoyé par cobra-expert
    ben le caractère * pour tout les champs de la table, non ?
    Pas sûr que MySQL autorise son utilisation comme ça...
    Et puis le "*", pour maintenir, c'est pas bien...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  14. #14
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Citation Envoyé par cobra-expert
    ben le caractère * pour tout les champs de la table, non ?
    Tu veux affecter "toto" à tous les champs de la table ?
    L'instruction SET d'une requête de type UPDATE porte sur une colonne précise.

    As-tu beaucoup de champs dans ta table ?

  15. #15
    HwRZxLc4
    Invité(e)
    Par défaut
    bon je ré explique

    J'ai une table (table1) avec 50 champs que je modifie, je voudrais aussi modifier 1 seul champs d'une 2 ème tables (table2).

    Voila.

Discussions similaires

  1. delete sur 3 tables en même temps
    Par sosophie dans le forum SQL
    Réponses: 2
    Dernier message: 07/08/2007, 16h02
  2. Effacer dans 2 tables en même temps.
    Par Empty_body dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/05/2007, 16h09
  3. Grant sur toutes les tables en même temps
    Par jer64 dans le forum SQL
    Réponses: 3
    Dernier message: 25/09/2006, 07h59
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Comptez sur deux tables en même temps
    Par genova dans le forum Langage SQL
    Réponses: 12
    Dernier message: 13/09/2004, 18h58

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