Ver Mensaje Individual
  #10 (permalink)  
Antiguo 11/08/2012, 09:26
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: DELETE en Multitablas asociadas

Cita:
Iniciado por NSD Ver Mensaje
Muchas gracias gnzsoloyo ese codigo si funciona.



estube leyendo los manuales de mysql para estos metodos antes de intentar hacerlo como ahora y sinseramente no entendi su funcionamiento. hise un par de pruebas pero como no me queda claro sin duda las estoy escribiendo muy mal.

podrias darme algun ejemplito de como funciona? es decir como puedo resolver mi problema con esas herramientas y si no es mucha molestia que me expliques brevemente que es lo que hace cada parte de la sentencia.

PD: Ya lei la documentacion oficial y no la entendi muy bien.

muchas gracias por tu ayuda!
La idea del ON DELETE CASCADE y ON UPDATE CASCADE es que cuanquier modificación de tipo actualización o borrado de las tablas base (donde ese valor es PK), se propague a las tablas donde es FK sin necesidad de realizarlo manualmente.
Lo que tienes que tener en cuenta es que:
1) Para que la cascada se produzca lo que debe borrarse en la tabla origen, donde esa clave es PK.
2) Los registros de las tablas dependientes (donde es FK) no deben ser a su vez FK en terceras tablas, a menos que también tengan operaciones en cascada.
3) Todas y cada una de las veces que esa PK sea FK en una tabla deben tener definida la cascada, o de lo contrario no se realizará ningún borrado en ninguna.

Este esquema es funcional cuando las dependencias son pocas, y muy útil en casos como los de Facturas<-DetalleFacturas, por ejemplo.
Pero donde la estructura de dependencias es compleja y/o posee muchas y múltiples dependencias, es difícil de implementar. No porque no se peuda, sino que hay que diseñarlo correctamente.
La ventaja es que eliminar la información de toda la cadena de tablas se obtiene con un único DELETE a una sola tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)