 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Tugui Invitado
|
Publicado: Mar 04 Mar, 2003 10:12 pm Asunto: Integridad Referencial |
|
|
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 |
|
 |
gabipetrone Cdt

Registrado: 28 Feb 2003Mensajes: 11
|
Publicado: Mie 05 Mar, 2003 6:21 am Asunto: |
|
|
| 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 |
|
 |
_Tugui Invitado
|
Publicado: Jue 06 Mar, 2003 12:02 am Asunto: |
|
|
| 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 |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Sab 08 Mar, 2003 11:11 am Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|