Mises à jour simultanées sur plusieurs tables MySQL
Lorsque vous travaillez avec plusieurs tables qui nécessitent des mises à jour de valeurs identiques à des fins de dénormalisation, il peut être inefficace d'effectuer mises à jour distinctes sur chaque table. Heureusement, MySQL fournit une méthode pour combiner ces mises à jour en une seule opération à l'aide d'une mise à jour multi-tables.
Considérez le scénario suivant :
<code class="sql">-- Table One Update UPDATE Table_One SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 AND lid = 1 LIMIT 1 -- Table Two Update UPDATE Table_Two SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 LIMIT 1</code>
Dans cet exemple, les deux tables nécessitent la même les valeurs sont mises à jour, à l'exception de l'absence du champ « couvercle » dans le tableau deux. Pour combiner ces mises à jour, nous pouvons utiliser une mise à jour multi-tables comme suit :
<code class="sql">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</code>
Dans cette requête, nous utilisons l'instruction "INNER JOIN" pour joindre les deux tables sur la colonne "userid", en garantissant que seules les lignes correspondantes sont mises à jour. La clause "SET" définit les valeurs de mise à jour pour les deux tables.
Il est important de noter que les mises à jour multi-tables ne prennent pas en charge la clause "LIMIT", cela pourrait donc potentiellement mettre à jour plus de lignes que prévu. Dans de tels cas, envisagez d'utiliser des procédures ou des transactions stockées pour un contrôle plus granulaire sur les mises à jour.
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!