Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿ Como borrar datos de diferentes tablas ?

Estas en el tema de ¿ Como borrar datos de diferentes tablas ? en el foro de Mysql en Foros del Web. Hola compañeros! Estoy diseñando una aplicación web y necesito borrar datos de diferentes tablas. Cada una de ellas lleva un campo con un identificador que ...
  #1 (permalink)  
Antiguo 19/10/2010, 09:11
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
¿ Como borrar datos de diferentes tablas ?

Hola compañeros!

Estoy diseñando una aplicación web y necesito borrar datos de diferentes tablas. Cada una de ellas lleva un campo con un identificador que es el que deseo borrar. Se trata de un identificador que indica a que campaña pertenecen (la aplicación va de manejo de campañas comerciales, etc..) es decir, por ejemplo, se trataría de que los registros con el número 345 que se encuentran en cada tabla sean borrados, eso si, en cada tabla el nombre del campo es diferente pero el identificador es el mismo. La estructura sería pareceida a:

TABLA1
id
campo1
campo2
campo_id_campana (contiene el 345)

TABLA2
id
campo1
campo2
campo_campana_id (contiene el 345)

TABLA3
id
campo1
campo2
campo_cam_id (contiene el 345)

TABLA4
id
campo1
campo2
campo_idcampana (contiene el 345)

¿Como lo podria realizar?

Podria realizar un delete tabla a tabla pero ¿no es mejor realizarlo de golpe en una sentencia?

Gracias!!
  #2 (permalink)  
Antiguo 20/10/2010, 01:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿ Como borrar datos de diferentes tablas ?

Si todos son una FK referenciados a una tabla principal y la FK tiene definido ON DELETE CASCADE con borrar el registro de la tabla principal tienes bastante se borraran los de las tablas dependientes.

Si no es así creo que tendrás que hacer las consultas (DELETE) a cada tabla.

Quim
  #3 (permalink)  
Antiguo 20/10/2010, 03:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿ Como borrar datos de diferentes tablas ?

Lo que te dice quimfv es lo mejor y más práctico. Usar FOREIGN KEYs ocn la cláusula ON DELETE CASCADE simplifica el problema; la única condición es que las tablas deben ser sí o si InnoDB, puesto que en las MyISAM no existen las FK.

Podría intentarse un DELETE usando JOIN sobre el campo, pero cuando son varias tablas al mismo tiempo puede suceder que el parser (y esto lo advierte el manual) cambie la secuencia de borrados y en algún momento se viole la integridad referencial y parte de los registros no se borre. Por eso el manual recomienda cuando son muchas tablas, borrarlas una a una, como te sugiere quimfv.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: borrar, diferentes, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:17.