Ver Mensaje Individual
  #1  
Antiguo 08-02-2007
chipsoni chipsoni is offline
Miembro
 
Registrado: nov 2005
Posts: 75
Reputación: 19
chipsoni Va por buen camino
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.
Responder Con Cita