Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Integridad Referencial

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Integridad Referencial Responder citando

Resulta que he creado una relación "Uno a Muchos" entre dos tablas paradox7 cuyo contenido se muestra al usuario a través de dos DBGrids en modo "Maestro - Detalle", cuando hice la relación entre las dos tablas con el DatabaseDesktop activé la casilla "Cascade" en la sección "Update Rule" con la intención de que cuando se borrase un registro de la tabla principal también se borrasen todos los detalles de la tabla relacionada pertenecientes al registro primario, pues bien, al intentar borrar un registro de la tabla principal que contiene registros secundarios me sale un error diciendo que no se puede borrar puesto que el registro tiene registros de detalle.
A mi me han enseñado que la opción cascade precisamente sirve para que te permita borrar todos los registros de detalle pertenecientes a un registro principal. A mi tanto la opción cascade como la prohibit no me dejan.
Ya son varias las veces que me he topado con este problema y he tenido que arreglármelas con código borrando primero los detalles y luego el registro principal, pero seguro que debe de haber alguna otra solución.
Espero una ayudita, MUCHAS GRACIAS.
Volver arriba
Mensaje    Asunto: Responder citando

Si, en la teoria el Cascade deberia eliminarte los registros del detalle... Aunque nunca trabaje con Paradox, pero segun mi poca experiencia en SQL para hacer los borrados en cascada no habia que especificar la clave foránea en la tabla principal y directamente hacer los borrados mediante triggers.... A lo mejor estas declarando la FK (que asegura la integridad restringiendo el borrado).. ya si no es eso no se me ocurre que podria ser... ^_^'
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por tu interés Gabipetrone, pero sigo igual de perdido. ¿me podrías indicar donde puedo comprobar si declaro una FK, como tu dices?
Volver arriba
Mensaje    Asunto: Responder citando

Una simple nota al respecto, por lo que yo recuerdo de SQL estandar, una cosa es la regla de UPDATE y otra la de DELETE. Si como bien dices lo que quieres conseguir es que cuando se borre una tupla se borre las correspondientes en la otra tabla referenciada, lo suyo es ON DELETE CASCADE, el UPDATE trata de las modificaciones.

Por favor comprueba que tienes la opción de DELETE CASCADE si es lo que quieres hacer, si por el contrario lo que quieres es que las modificaciones se actualizen la tabla ajena, entonces, tendrás que poner también ON UPDATE CASCADE.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.