J'ai une fonction qui met à jour trois tables, mais j'utilise trois requêtes pour effectuer cette. Je souhaite utiliser une approche pratique pour une bonne pratique.
Comment puis-je mettre à jour plusieurs tables dans MySQL avec une seule requête?
J'ai une fonction qui met à jour trois tables, mais j'utilise trois requêtes pour effectuer cette. Je souhaite utiliser une approche pratique pour une bonne pratique.
Comment puis-je mettre à jour plusieurs tables dans MySQL avec une seule requête?
Prenons le cas de deux tables, Books
et Orders
.
Dans le cas, on augmente le nombre de livres dans un ordre particulier avec Order.ID = 1002
en Orders
tableau nous avons aussi besoin de réduire le nombre total de livres disponibles dans notre stock, par le même nombre en Books
table.
UPDATE Books, Orders
SET Orders.Quantity=Orders.Quantity+2,
Books.InStock=Books.InStock-2
WHERE Books.BookID=Orders.BookID
AND Orders.OrderID = 1002;
Vous pouvez aussi le faire avec une seule requête avec une jointure comme suit:
UPDATE table1,table2 SET table1.col=a,table2.col2=b
WHERE items.id=month.id;
Et puis il suffit d'envoyer cette requête, bien sûr. Vous pouvez en lire plus à propos des jointures ici: http://dev.mysql.com/doc/refman/5.0/en/join.html. Il y a aussi quelques restrictions pour la commande et de la limitation sur les tables multiples mises à jour que vous pouvez lire à ce sujet ici: http://dev.mysql.com/doc/refman/5.0/en/update.html (juste ctrl+f "joindre").
C'est généralement ce que les procédures stockées sont pour: mise en œuvre de plusieurs instructions SQL dans une séquence. L'aide de restaurations, vous pouvez vous assurer qu'ils sont traités comme une seule unité de travail, c'est à dire soit ils sont tous exécutés ou aucun d'entre eux sont, pour garder des données cohérentes.
Quand vous dites plusieurs requêtes voulez-vous dire plusieurs instructions SQL comme dans:
UPDATE table1 SET a=b WHERE c;
UPDATE table2 SET a=b WHERE d;
UPDATE table3 SET a=b WHERE e;
Ou plusieurs requête appels de fonction, comme dans:
mySqlQuery(UPDATE table1 SET a=b WHERE c;)
mySqlQuery(UPDATE table2 SET a=b WHERE d;)
mySqlQuery(UPDATE table3 SET a=b WHERE e;)
L'ancien peut être fait à l'aide d'un seul mySqlQuery appel, si c'est ce que tu voulais faire, il suffit d'appeler la mySqlQuery fonction de la manière suivante:
mySqlQuery(UPDATE table1 SET a=b WHERE c; UPDATE table2 SET a=b WHERE d; UPDATE table3 SET a=b WHERE e;)
Cela permettra d'exécuter tous les trois requêtes avec un mySqlQuery() de l'appel.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.