Maison  >  Article  >  base de données  >  Comment puis-je mettre à jour plusieurs tables simultanément dans MySQL ?

Comment puis-je mettre à jour plusieurs tables simultanément dans MySQL ?

DDD
DDDoriginal
2024-11-03 05:59:30500parcourir

How can I Update Multiple Tables Simultaneously in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn