![]() |
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? |
Sí hay definidas unas claves ajenas en las subtablas no será necesario que hagas esa consulta tan engorrosa.
|
si que estan relacionadas las tablas, ¿como seria entonces?, ¿borro en tdemanda y se borran las demas?
|
¡Me da un error!
Cuando hago Delete * from tdemanda where tdemanda.hecho=1; Lo mas facil del mundo y me dice que hay algo equivocado en la sintaxis. Dios mio y yo que creia que esto era una chorradita, ¿alguien me puede echar una mano por favor? |
|
Va perfecto, muchisimas gracias.
|
La franja horaria es GMT +2. Ahora son las 23:59:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi