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

Borrar Datos en Tablas Vinculadas

Estas en el tema de Borrar Datos en Tablas Vinculadas en el foro de Mysql en Foros del Web. Amigos .... tengo la siguiente situacion Partiendo de 3 tablas Anidadas ( si es correcto el termino ) por ejemplo Tabla A ID Descripcion_A Tabla ...
  #1 (permalink)  
Antiguo 03/11/2005, 17:06
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Borrar Datos en Tablas Vinculadas

Amigos .... tengo la siguiente situacion

Partiendo de 3 tablas Anidadas ( si es correcto el termino ) por ejemplo

Tabla A
ID
Descripcion_A

Tabla B
ID
ID_A
Descripcion_B

Tabla C
ID
ID_B
Descripcion_C

como hago para "borrar" los datos cuando "borro" un valor en la Tabla A y quiero que se elimine todo lo que se encuentra en las Tablas B y C relacionados por la cascada de datos

En la Tabla C no existe ninguna relacion directa con A pero si con los ID de la B

Si deseo borrar desde la Tabla A hago

mysql_query("DELETE FROM Tabla_A WHERE ID='$valor'");

Ahora en la B

mysql_query("DELETE FROM Tabla B WHERE ID_A='$valor'");

pero se me tranca el serrucho con la tabla C

Alguna Idea

Gracias

Frank
  #2 (permalink)  
Antiguo 03/11/2005, 17:20
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Se me ocurrio hacer asi pero no se si exista una forma mas expedita

Código PHP:
$elim1=mysql_query("SELECT * FROM B WHERE ID_A='$valor'");
while (
$elim2 mysql_fetch_array($elim1)) {
       
$elimC=$elim2[ID];
       
mysql_query("DELETE FROM C WHERE ID_B='$elimC'");
}
mysql_query("DELETE FROM Tabla B WHERE ID_A='$valor'");
mysql_free_result($elim1); 
Saludos.

Frank
  #3 (permalink)  
Antiguo 04/11/2005, 03:27
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Si defines las claves ajenas y el borrado es cascada, el gestor de base de datos te lo hace automaticamente.
  #4 (permalink)  
Antiguo 04/11/2005, 05:09
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Me dejarte VERDE

Tienes algun ejemplo ?

Gracias. Frank
  #5 (permalink)  
Antiguo 04/11/2005, 05:20
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
http://dev.mysql.com/doc/refman/5.0/...eign-keys.html

Echale un ojo (hay un ejemplo al final), si no lo tienes claro todavía te lo explico pero es que es largo de explicar.
  #6 (permalink)  
Antiguo 04/11/2005, 06:08
Avatar de gonzalezmfrank  
Fecha de Ingreso: julio-2005
Ubicación: Maracaibo - Venezuela
Mensajes: 266
Antigüedad: 18 años, 9 meses
Puntos: 0
Es interesante el articulo del vinculo pero tengo el inconveniente de la version de MySQL, está definida la opcion para 5.0 pero yo tengo la 4.0 y el Servidor tiene la 4.1, entonces.... me funcionara?

Por otro lado que diferencia existe entre MyISAM y InnoDB ?

Gracias por tu apoyo

Frank
  #7 (permalink)  
Antiguo 04/11/2005, 06:17
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
También funciona pra la 4.x puedes probar el codigo de ejemplo.


Las diferencias están bastante bien explicadas aquí:
http://www.forosdelweb.com/showthrea...=MyISAM+InnoDB

Un saludo
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 03:48.