Tengo una función que actualiza tres tablas, pero utilizo tres consultas para realizar esto. Deseo utilizar un enfoque más conveniente para las buenas prácticas.
¿Cómo puedo actualizar varias tablas en MySQL con una sola consulta?
mysql
sql
sql-update
Adamski
fuente
fuente

Respuestas:
Tomemos el caso de dos mesas,
BooksyOrders. En caso de que aumentemos el número de libros en un orden particularOrder.ID = 1002en laOrderstabla, entonces también debemos reducir el número total de libros disponibles en nuestro inventario por el mismo número en laBookstabla.fuente
Para ver qué va a actualizar esto, puede convertirlo en una instrucción select, por ejemplo:
Un ejemplo que usa las mismas tablas que la otra respuesta:
EDITAR:
Solo por diversión, agreguemos algo un poco más interesante.
Digamos que tienes una tabla de
booksy una tabla deauthors. Tubookstienes unauthor_id. Pero cuando se creó originalmente la base de datos, no se configuraron restricciones de clave externa y más tarde un error en el código front-end provocó que algunos libros se agregaran con correos no válidosauthor_id. Como administrador de bases de datos , no desea tener que pasar por todo estobookspara verificar cuálauthor_iddebería ser, por lo que se toma la decisión de que los capturadores de datos arreglen elbookspunto a la derechaauthors. Pero hay demasiados libros para revisar cada uno y digamos que sabes que los que tienen una s que no son válidos. Ya hay una interfaz para que los usuarios actualicen los detalles del libro y los desarrolladores no quieren cambiar eso solo por este problema. Pero la interfaz existente hace unauthor_idque corresponde con un realauthorson correctos. Son solo los que no existenauthor_idINNER JOIN authors, por lo que se excluyen todos los libros con autores no válidos.Lo que puede hacer es esto: inserte un registro de autor falso como "Autor desconocido". Luego actualice el
author_idde todos los registros incorrectos para señalar al autor Desconocido. Luego, los capturadores de datos pueden buscar todos los libros con el autor establecido en "Autor desconocido", buscar el autor correcto y corregirlo.¿Cómo se actualizan todos los registros incorrectos para señalar al autor desconocido? Así (suponiendo que el autor desconocido
author_ides 99999):Lo anterior también actualizará
booksque tenga unNULLauthor_idautor desconocido. Si no quieres eso, por supuesto que puedes agregarAND books.author_id IS NOT NULL.fuente
También puede hacer esto con una consulta usando una combinación como esta:
Y luego simplemente envíe esta consulta, por supuesto. Puede leer más sobre las combinaciones aquí: http://dev.mysql.com/doc/refman/5.0/en/join.html . También hay un par de restricciones para ordenar y limitar las actualizaciones de múltiples tablas que puede leer aquí: http://dev.mysql.com/doc/refman/5.0/en/update.html (solo ctrl + f "unirse").
fuente
Por lo general, para eso están los procedimientos almacenados: para implementar varias instrucciones SQL en una secuencia. Con las reversiones, puede asegurarse de que se traten como una unidad de trabajo, es decir, que se ejecuten todas o ninguna de ellas, para mantener la coherencia de los datos.
fuente
Cuando dice múltiples consultas, quiere decir múltiples sentencias SQL como en:
O múltiples llamadas a funciones de consulta como en:
Todo lo anterior se puede hacer usando una sola llamada mySqlQuery si eso es lo que quería lograr, simplemente llame a la función mySqlQuery de la siguiente manera:
Esto ejecutará las tres consultas con una llamada mySqlQuery ().
fuente