Mysql – Eliminar datos de dos tablas a la vez

Pongamos un ejemplo claro para mostrar qué queremos hacer. Por un lado, tenemos en una tabla llamada Facturas los datos de la factura. Por otro lado, tenemos la tabla Facturas_lineas dónde almacenamos las líneas de las facturas. Al eliminar una factura debe eliminarse las líneas correspondientes…

Lo haremos de la siguiente manera:

1
2
3
DELETE a1, a2 FROM
Facturas AS fac JOIN Facturas_lineas AS lin
WHERE lin.factura_ID=fac.Id AND fac.Id=3241

De esta manera, estamos eliminando los registros de facturas y de facturals lineas que cumplan la condición que la Id sea la 3241.

Y si, esto es solo un ejemplo. Si en la base datos hubiéramos relacionado correctamente las dos tablas con claves foráneas (ON DELETE CASCADE), la eliminación se haría de forma automática. Sólo es un ejemplo para eliminar en una sola consulta dos registros de dos tablas diferentes.

Atentos, porque toda eliminación son críticas. Haced copia de seguridad antes, y nosotros no nos hacemos cargo de cómo utilizáis el código que os mostramos, lo hacéis bajo vuestra responsabilidad.

Artículos relacionados

MySql – Convertir a minúsculas menos el prim... En muchas ocasiones los usuarios, muy animados, empiezan a introducir datos en su CMS (wordpress, prestashop...) y cuando ya han añadido todos los reg...
Mysql – UNION ALL y GROUP BY o ORDER BY Cuando en MySql se utiliza el UNION ALL, estamos uniendo los resultados de varias consultas. Para ello, debe cumplirse varias condiciones, entre la qu...
SQL – Listar registros duplicados o repetido... Cuando estamos trabajando con bases de datos con muchos registros, se puede producir muchos errores. Muchos de ellos es la duplicación de registros. H...
Mysql Tips – Mayúsculas (Ucase) y reemplazar... Durante un proyecto puedes encontrarte con imprevistos. Imaginad que una vez almacenado los datos de nuestros clientes en la base de datos, nos dicen ...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*