[Pregunta]: ¿Cómo eliminar "registros descendientes" en una consulta SQL?

Iniciado por Leguim, 25 Mayo 2021, 00:11 AM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

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:


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

MinusFour

Segun el manual de MySQL:

Código (sql) [Seleccionar]

DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
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.