FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Borrado con integridad referencial
Hola estimados, tengo el siguiente problema:
Estoy borrando datos de una tabla padre que tiene relacionada una tabla hija, dicha tabla hija tiene como foreign key el campo clave de la tabla padre(que hace la relación), como existe integridad referencial entre las tablas primero borro los datos de la tabla hija y después del padre, para no generar un error de violación, ambos procesos se ejecutan bajo una misma transacción, pero en dos procedimientos almacenados distintos(uno borra los hijos y el otro borra el padre). El problema es que aun borrando los hijos primero al borrar el padre, me envía un error de violación de clave foranea. Bajo mi lógica si borro primero los hijos y después el padre esto no debería ocurrir a menos que la transacción no este leyendo el borrado efectuado. Uso Firebilrd 2.5 y componentes FireDac para el acceso a los datos y transacciones. Espero me puedan ayudar, gracias... |
#2
|
||||
|
||||
Lo lógico, si emite un error de integridad referencial es que... haya un error de integridad referencial. Revisa mejor el código y síguelo paso a paso.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Casimiro, es evidente que es un error de integridad referencial...he revisado mi código varias veces y no veo problema en el. Déjame cambiar un poco la pregunta inicial, ya que creo que el error va por el lado de la transacción. Si ejecuto el borrado de la tabla hijo bajo la misma transacción que ejecuto el borrado de la tabla padre....la tabla padre se entera de que he borrado los hijos...obviamente todo antes de realizar el commit, ya que todo ocurre en una sola transacción.
|
#4
|
||||
|
||||
Así debe ser, efectivamente.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
Casimiro, podrías ser un poco mas explicito..
|
#6
|
||||
|
||||
No entiendo, es que no has hecho ninguna pregunta
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
Me refiero a que seas mas explicativo con tu comentario:
Cita:
Cita:
|
#8
|
||||
|
||||
Sí, correcto, porque están en la misma transacción.
Aunque si quieres, también puedes borrar los datos de la tabla hija. Confirmar la transacción. Borrar de la tabla padre. Confirmar otra transacción.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
|||
|
|||
Amigo y por que no dejas a Firebird que se encarge de ese trabajo...
Así cada vez que borres un registro padre el borrado de sus hijos lo hará firebird... Saludos cordiales |
#10
|
||||
|
||||
Eso es lo ideal.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
|||
|
|||
Cita:
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
integridad referencial | Pollo2004 | Varios | 2 | 04-09-2008 22:10:24 |
integridad referencial | Kamael | Varios | 3 | 28-01-2008 10:10:56 |
Integridad Referencial | seara2005 | Firebird e Interbase | 6 | 15-05-2006 07:58:29 |
¿ Integridad referencial ? | Turia | MySQL | 1 | 25-01-2006 14:59:33 |
Integridad Referencial | pablo | Conexión con bases de datos | 3 | 03-01-2004 15:02:53 |
|