Limpieza de base de datos
Hola buenas tardes, tengo una duda:
Necesito hacer limpieza de una base de datos, tengo que borrar los elementos de una tabla que cumplan una condicion y de todas sus subtablas. va asi mas o menos:
Si tdemanda.finalizada=1 entonces la borro y borro todas las entradas de otras 10 tablas siempre que tdemanda.codigo, que es la clave primaria de la tabla tdemanda, sea igual al codigo (que tambien es clave primaria) de las otras tablas.
Lo he hecho asi (solo voy a poner 3 tablas ademas de tdemanda):
DELETE * from tdemanda, tequipo_informatico, tmantenimiento, tmantenimiento_dispositivo
WHERE ((tdemanda.hecho=1) and (tdemanda.codigo=tequipo_informatico.codigo))
or ((tdemanda.hecho=1) and (tdemanda.codigo=tlaboratorio.codigo))
or ((tdemanda.hecho=1) and (tdemanda.codigo=tmantenimiento.codigo))
or ((tdemanda.hecho=1) and (tdemanda.codigo=tmantenimiento_dispositivo.codigo));
Tambien decir que si un codigo esta ademas de en la tabla tdemanda, en una de las subtablas, no puede estar en ninguna otra subtabla.
Es correcto?, hay alguna otra forma menos engorrosa?
Última edición por chipsoni fecha: 08-02-2007 a las 19:40:46.
|