Maison > Article > base de données > MySQL peut-il mettre à jour plusieurs tables simultanément en une seule requête ?
Mise à jour simultanée de plusieurs tables dans MySQL
Dans les opérations de base de données, il peut s'avérer nécessaire de mettre à jour les valeurs de plusieurs tables à la fois, éventuellement avec des valeurs variables. niveaux de granularité ou conditions supplémentaires. Un scénario courant est celui où plusieurs tables nécessitent les mêmes données à des fins de dénormalisation.
Dans de tels cas, effectuer des requêtes UPDATE distinctes sur chaque table peut s'avérer inefficace et redondante. Cet article aborde la question de savoir s'il est possible de combiner plusieurs opérations UPDATE en une seule requête unifiée.
Mises à jour multi-tables
La documentation MySQL fournit une solution utilisant mises à jour multi-tables. Cette approche permet de mettre à jour plusieurs tables au sein de la même requête en les joignant à l'aide d'une colonne ou d'une expression commune. La syntaxe d'une mise à jour multi-tables est la suivante :
UPDATE table1 INNER JOIN table2 ON (table1.column = table2.column) SET table1.column1 = ..., table1.column2 = ..., table2.column1 = ..., table2.column2 = ... WHERE ...
Exemple
Considérez la question présentée dans l'énoncé du problème : deux tables avec quelques différences dans les colonnes et un besoin des mêmes mises à jour. En utilisant l'approche de mise à jour multi-tables, nous pouvons combiner les deux requêtes UPDATE en une seule :
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
Dans cet exemple, Table_One a une colonne supplémentaire (couvercle) qui n'est pas présente dans Table_Two. La condition de jointure garantit que les mises à jour sont effectuées uniquement sur les lignes correspondantes.
Limitations
Bien que les mises à jour multi-tables constituent un moyen pratique de mettre à jour plusieurs tables à la fois, elles sont accompagnés de certaines limitations :
Solutions alternatives
En fonction des exigences spécifiques, il existe des solutions alternatives à envisager au lieu des mises à jour multi-tables :
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!