Maison > Article > base de données > Comment puis-je mettre à jour plusieurs tables simultanément dans MySQL ?
Mise à jour simultanée de plusieurs tables dans MySQL
Lorsque vous travaillez avec des bases de données relationnelles, il peut être nécessaire de mettre à jour les données associées sur plusieurs tables simultanément. Cela pose un défi si des instructions de mise à jour standard sont utilisées, car elles ne peuvent modifier qu'une seule table à la fois.
Considérez le scénario suivant, dans lequel deux tables (Table_One et Table_Two) nécessitent les mêmes mises à jour à des fins de dénormalisation. Bien que les requêtes de mise à jour pour chaque table soient presque identiques, elles diffèrent par le nom de la table et la disponibilité des champs.
Mises à jour séparées
Traditionnellement, ces mises à jour seraient exécutées séparément :
UPDATE Table_One SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 AND lid = 1 LIMIT 1; UPDATE Table_Two SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 LIMIT 1;
Mises à jour multi-tables
Cependant, MySQL propose une solution plus efficace avec les mises à jour multi-tables. En joignant les tables sur un champ commun (dans ce cas, "userid"), il est possible de mettre à jour les deux tables avec une seule requête :
UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid) SET a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200, b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200 WHERE a.userid = 1 AND a.lid = 1 AND b.userid = 1;
Il est important de noter que les mises à jour multi-tables font ne prend pas en charge la clause LIMIT, qui peut entraîner des mises à jour involontaires si elle n'est pas utilisée avec précaution. Des solutions alternatives, telles que des procédures stockées ou des transactions, peuvent être plus appropriées dans certains scénarios.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!