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

Borrar en cascada

Estas en el tema de Borrar en cascada en el foro de Mysql en Foros del Web. Buenas tardes gente tengo esta duda Tengo una tabla articulos con un ID (por ejemplo) "3314848" pero se ralaciona de uno a uno con otras ...
  #1 (permalink)  
Antiguo 02/10/2010, 21:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 49
Antigüedad: 14 años, 2 meses
Puntos: 0
Borrar en cascada

Buenas tardes gente tengo esta duda

Tengo una tabla articulos con un ID (por ejemplo) "3314848" pero se ralaciona de uno a uno con otras 2 tablas que seria datos de control, y datos economicos es decir que es este ID es la clave principal en 3 tablas pero yo quisiera cuando borre la de la tabla articulos se borren la de los otras 2.

Salu2.
  #2 (permalink)  
Antiguo 03/10/2010, 06:31
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: Borrar en cascada

Para que eso ocurra hay dos formas:
1) Si las tabllas son InnoDB y en las otras dos tablas su presencia es como FOREIGN KEY, simplemente hay que agregarles la cláusula ON DELETE CASCADE en su definición. ASí, simplemente le indicas a la tabla primaria que borre el ID, y las otras dos se borrarán solas.
2) Si no son InnoDB o bien no puedes modificar la estructura de la tabla, puedes usar DELETE a tres tablas:
Código MySQL:
Ver original
  1. DELETE FROM tabla1 T1
  2.     INNER JOIN tabla2 T2 ON T1.ID = T2.ID
  3.     INNER JOIN tabla3 T ON T1.ID = T3.ID
  4. WHERE T1.ID = valorbuscado;
Este método puede ser errático si las tablas son InnoDB y están declaradas las FK, porque el parser de MySQL es el que analiza la secuencia de borrado, y puede no respetar el orden que estamos poniendo aquí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/10/2010, 19:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 49
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Borrar en cascada

Ok muy amable en responder, primero las claves en las segundas tablas es decir datos de control y datos economicos son primarias me dices que si coloco en estas tablas estos ID como foraneos de la tabla articulos podre borrar en cascada? surge mi duda donde pondria la cláusula ON DELETE CASCADE ? en la tabla primaria? osea articulos? o a las 2 tablas que tienen las tablas que tienen las clave foraneas?

PD: Cabe destacar que uso como diseñador mysql workbench.

Etiquetas: borrar, cascada
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 13:54.