Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Limpieza de base de datos (https://www.clubdelphi.com/foros/showthread.php?t=40172)

chipsoni 08-02-2007 19:37:17

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?

DarKraZY 08-02-2007 19:49:22

Sí hay definidas unas claves ajenas en las subtablas no será necesario que hagas esa consulta tan engorrosa.

chipsoni 08-02-2007 20:41:45

si que estan relacionadas las tablas, ¿como seria entonces?, ¿borro en tdemanda y se borran las demas?

chipsoni 08-02-2007 21:43:10

¡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?

Bicho 08-02-2007 21:44:37

Prueba así

Código SQL [-]
Delete from tdemanda where tdemanda.hecho=1;

Sin el asterisco.

Suerte. :D

chipsoni 09-02-2007 03:26:11

Va perfecto, muchisimas gracias.


La franja horaria es GMT +2. Ahora son las 01:01:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi