Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2007
Avatar de Gaim2205
Gaim2205 Gaim2205 is offline
Miembro
 
Registrado: ago 2007
Ubicación: Durango, Mexico
Posts: 144
Poder: 17
Gaim2205 Va por buen camino
Principiante integridad referencial

Asigné integridad referencial entre 2 tablas que son exactamente iguales...

Tabla Profesor y Tabla Nothabil, tienen la siguiente estructura:
Matricula (primaria) : integer;
Nombre : Char;
etc...
etc...

el caso es que son identicas, ambas con la misma llave primaria. Se asigna la integridad entre los 2 campos "matricula".

Pero al momento de agregar un registro mediante mi aplicacion (Delphi 7, componentes MDO) me pone el siguiente error:
'violation of foreign key constraint FK_PROFESOR1" on table "PROFESOR"
foreign key reference does not exist'

alguien puede orientarme... no se puede hacer i.r con 2 llaves primarias?? soy principiante en firebird... Gracias por su ayuda de antemano.
Responder Con Cita
  #2  
Antiguo 23-08-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

El problema que tienes es que se esta vilando la integridad referencial.

Ejemplo tienes tabla1 T1 y tabla2 T2

T2 tienen una integridad refenecial hacia T1 Si tratas de insertar un registro en T2 el campo de T2 por el cual se hace referencia a T1 No se Encuantra en registro relacionado no se va a poder insertar.

Te explico con datos

T1(C1:Entero, C2:cadena)

Regsitros de T1

C1 | C2
-------------
1 | Primero
-------------
2 | Segundo
-------------

T2(CT1, C1, C2) Donde CT1 es el campo d erefencia hacia la tabla T2 por el campo C1
Si hacemos esto
Código SQL [-]
Insert into T2 values(3, 1, 'Primero'); //Error no existe un registro relacionadodo en T1
Insert into T2 values(1, 1, 'Primero'); //Bien el registro relecionado en T1 existe
Insert into T2 values(2, 1, 'Primero'); //Bien el registro relecionado en T1 existe
Insert into T2 values(8, 1, 'Primero'); //Error no existe un registro relacionadodo en T1
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #3  
Antiguo 23-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Me parece curioso que quieras tener una integridad referencial en dos tablas identicas, lo que yo tengo entendido las referencias se usan principalmente para tablas maestro-detalle.

Si nos explicas mejor que intentas hacer con las dos tablas te podrían dar una mejor respuesta a tu problemática.

Bienvenido al Club y te invito a que leas nuestra guía de estilo.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 23-08-2007
Avatar de Gaim2205
Gaim2205 Gaim2205 is offline
Miembro
 
Registrado: ago 2007
Ubicación: Durango, Mexico
Posts: 144
Poder: 17
Gaim2205 Va por buen camino
entonces.. como lo soluciono?? disculpa la ineptitud pero como dije soy muy principiante jeje
Responder Con Cita
  #5  
Antiguo 23-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Gaim2205 Ver Mensaje
entonces.. como lo soluciono?? disculpa la ineptitud pero como dije soy muy principiante jeje
Si nos dices que pretendes hacer con las tablas, seguro podemos ayudarte o darte algunos consejos.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 23-08-2007
Avatar de Gaim2205
Gaim2205 Gaim2205 is offline
Miembro
 
Registrado: ago 2007
Ubicación: Durango, Mexico
Posts: 144
Poder: 17
Gaim2205 Va por buen camino
razon

egostar, gracias por la bienvenida. La razon es, que en un modulo de la aplicacion se capturan o modifican los datos del registro y se dan de alta en ambas tablas.

Y en otro modulo, se pueden modificar o borrar datos, pero solo en una de las 2 tablas. mientras que la otra se queda intacta.

se que se puede hacer facilmente mediante codigo si (y ya lo hice)... pero queria hacer pruebas con lo de integridad referencial.

danke
Responder Con Cita
  #7  
Antiguo 23-08-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 22
Paoti Va por buen camino
Cita:
Empezado por Gaim2205 Ver Mensaje
Y en otro modulo, se pueden modificar o borrar datos, pero solo en una de las 2 tablas. mientras que la otra se queda intacta.
Especifica que es borrar datos, eliminar el registro? si es así, y no es la tabla padre se peude hacer, pero si quieres borrar asumiendo que es el registro de la tabla padre y la otra tabla tiene registro pues no se podra eliminar


creo que lo que estas haciendo es insertar datos en la tabla hija y no existe el correspondiente registro padre en la tabla principal
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #8  
Antiguo 23-08-2007
Avatar de Gaim2205
Gaim2205 Gaim2205 is offline
Miembro
 
Registrado: ago 2007
Ubicación: Durango, Mexico
Posts: 144
Poder: 17
Gaim2205 Va por buen camino
Creo que confundi a todos, y la verdad es mucho mas facil hacerlo desde codigo, para la integridad referencial hare lo que postearon antes y solo hacerlo con tablas maestro-detalle...

Como dije soy principiante en bases de datos (empecé ayer) y mi error era no saber que no se pueden insertar datos a una tabla sin que existiera ya un registro en la tabla padre. Pense que se podian insertar en la tabla padre e hija al mismo tiempo.

gracias de todos modos, seguramente tendre dudas menos tontas la proxima vez :P
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Integridad referencial silviodp Tablas planas 0 22-08-2006 23:27:05
Integridad Referencial seara2005 Firebird e Interbase 6 15-05-2006 06:58:29
¿ Integridad referencial ? Turia MySQL 1 25-01-2006 13:59:33
Integridad Referencial pablo Conexión con bases de datos 3 03-01-2004 14:02:53
Integridad referencial jdiazan Firebird e Interbase 3 07-07-2003 17:27:34


La franja horaria es GMT +2. Ahora son las 03:19:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi