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

delete on cascade from child to parent and parent to child?

Estas en el tema de delete on cascade from child to parent and parent to child? en el foro de Bases de Datos General en Foros del Web. Hola amigos!! Resulta que tengo una tabla "Primera" que se relaciona con otra "Segunda" en N:M. Para ello necesito crear una tabla en el medio ...
  #1 (permalink)  
Antiguo 13/03/2013, 04:46
 
Fecha de Ingreso: diciembre-2010
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 3
delete on cascade from child to parent and parent to child?

Hola amigos!!

Resulta que tengo una tabla "Primera" que se relaciona con otra "Segunda" en N:M. Para ello necesito crear una tabla en el medio que llamaremos "Medio".

Si elimino un registro en la tabla "Primera" quiero que elimine el registro en Segunda con el que se relaciona.

Evidente que la tabla "Medio" tenga dos claves foraneas una apuntando a "Primera" y otra a "Segunda"

Resulta que a la hora de crear las claves foraneas y la eliminacion me he encontrado con la siguiente duda.

Puedo eliminar un registro en Medio si elimino un registro en Primera, con on cascade delete

Pero como puedo hacer para eliminar un registro en Segunda si elimino un registro en "Medio"??

Gracias y un saludo
  #2 (permalink)  
Antiguo 13/03/2013, 06:30
Avatar de 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 on cascade from child to parent and parent to child?

Cita:
Puedo eliminar un registro en Medio si elimino un registro en Primera, con on cascade delete

Pero como puedo hacer para eliminar un registro en Segunda si elimino un registro en "Medio"??
No puedes.
Para eliminar los registros de tablas base, debes forzosamente borrarlos en forma directa, porque no existe una dependencia entre ambas que permita detectar ese detalle.
Lo único que se podría hacer es, tal vez, crear un TRIGGER con AFTER DELETE que verifique la segunda tabla y borre el registro correspondiente. Pero no estoy tan seguro de cuán viable es. No lo he intentado.
otra posibilidad, que es la más usual en desarrollo, es realizar ese tipo de tareas en un stored procedure. De ese modo ambos borrados se realizan en una sola operación (desde el punto de vista del usuario).
__________________
¿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: foreignkey, mysql
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 23:15.