Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/06/2007, 17h28   #1
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 22h49   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
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
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 10h15   #3
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 (
  Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 10h27   #4
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
si je fais un truc comme sa ?

Code :
1
2
		$modifier = mysql_query($requete_insertion_demande);
		$modifier = mysql_query($requete_insertion_demande2);
Sa devrais aller non ?
  Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 13h18   #5
Membre habitué
 
Inscription : mai 2006
Messages : 139
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2006
Messages : 139
Points : 137
Points : 137
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.
gk14fire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 13h52   #6
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 ?
  Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 11h06   #7
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
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 :
1
2
3
4
 
UPDATE A JOIN B USING (id)
SET A.nom='toto', B.nom='titi'
WHERE [...]
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2007, 15h24   #8
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
hmmmm, je vais voir pour ta solution, donc la mienne est pas bonne alors ?
  Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 08h29   #9
Membre habitué
 
Inscription : mai 2006
Messages : 139
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2006
Messages : 139
Points : 137
Points : 137
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).
gk14fire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 16h24   #10
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 :
1
2
3
UPDATE essais1 JOIN essais2 USING (id)
SET essais1.*='toto', essais2.monchan4='titi'
WHERE [...]
exacte ?
  Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 10h09   #11
Membre habitué
 
Inscription : mai 2006
Messages : 139
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2006
Messages : 139
Points : 137
Points : 137
Qu'essaies-tu de faire par :
Code :
... essais1.*='toto' ...
Il faut que tu précises la colonne à modifier !
gk14fire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 13h39   #12
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
ben le caractère * pour tout les champs de la table, non ?
  Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 13h46   #13
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
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
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 14h30   #14
Membre habitué
 
Inscription : mai 2006
Messages : 139
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mai 2006
Messages : 139
Points : 137
Points : 137
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 ?
gk14fire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 09h54   #15
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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.
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Mettre Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h59.


 
 
 
 
Partenaires

Hébergement Web