Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Leguim en 25 Mayo 2021, 00:11 am



Título: [Pregunta]: ¿Cómo eliminar "registros descendientes" en una consulta SQL?
Publicado por: Leguim en 25 Mayo 2021, 00:11 am
Hola!
Básicamente estoy escribiendo una consulta donde va a eliminar registros que ya son muy antiguos pero estoy teniendo problemas para que además elimine otros registros (están en otras tablas) que están relacionados de alguna manera.

Hice este dibujo para que me entiendan mejor:
(https://i.ibb.co/CvYF59H/diagrama-subconsultas-luego-borrar.jpg)

Sino me pude dar a entender lo puedo volver a explicar, es un poco engorroso..


Título: Re: [Pregunta]: ¿Cómo eliminar "registros descendientes" en una consulta SQL?
Publicado por: MinusFour en 26 Mayo 2021, 04:11 am
Segun el manual de MySQL:

Código
  1. DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
  2. WHERE t1.id=t2.id AND t2.id=t3.id;

Pero también puedes cambiar tanto id_tabla_x en tabla_y como id_tabla_y en tabla_z para que sean llaves foráneas y que se eliminen si la llave foranea deja de existir en las otras tablas.

Así solo eliminas un registro de la tabla_x y se eliminan los registros correspondientes en tabla_y y tabla_z.