MySql mise à jour de deux tables à la fois
J'ai deux tables qui ont besoin ont besoin exactement les mêmes valeurs pour la dénormalisation fins.
Voici la requête.
première table
UPDATE Table_One
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 AND lid = 1 LIMIT 1
deuxième table
UPDATE Table_Two
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 LIMIT 1
Comme vous pouvez le voir, la seule différence entre les deux tables est leur nom de table et deux n'ont pas le champ lid
De toute façon de combiner les deux mises à jour à un seul?
Vous devez vous connecter pour publier un commentaire.
Il devrait être possible avec un multi-tables de mise à jour, comme décrit dans la documentation.
http://dev.mysql.com/doc/refman/5.5/en/update.html
Remarque: Multi-table ne supporte pas de LIMITE, ce qui pourrait causer plus de chagrin selon les détails.
Des procédures stockées ou des transactions peut être une meilleure solution.
Si il y a un-à-un ou un-à-plusieurs relation de Table_One à Table_Two, ce serait le travail:
Ils sont deux requêtes distinctes et doivent donc être traités comme tels. Désolé de le dire, mais si vous êtes à la mise à jour de deux tableaux avec des données identiques, il y a probablement une meilleure solution pour la conception de votre base de données. N'oubliez pas de garder votre programmation SEC.
Modifier: Devrait revenir; vous pouvez l'utiliser pour plusieurs tables, mais vous ne pouvez pas utiliser
ORDER BY
ouLIMIT
.1
, mais ensuite, vous définissez à0
lorsque vous avez besoin de “reset” de la table.Si vous pouvez joindre les tables, vous pouvez créer une vue de deux tables, puis mise à jour par l'intermédiaire de ce point de vue. Dans votre exemple, il ressemble à userid pourrait être une clé appropriée.
Dans la création de la vue, vous avez besoin de coller à la lignes directrices suivantes.