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 09-05-2003
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 22
erickperez6 Va por buen camino
Problema con referencia foranea !

Saludos, estoy creando una referencia foranea y me desplega el siguiente mensage de error:

Código PHP:
Unsuccessful metadata update
STORE RDB$REF_CONSTRAINTS failed
action cancelled by trigger 
(1to preserve data integrity
Name of Referential Constraint not defined in constraints table
Statement

ALTER TABLE "FINA_FACTURACION_H" ADD FOREIGN KEY ("COMP_ID""CLIE_ID"
REFERENCES FINA_CLIENTES ("COMP_ID""CLIE_ID"
Realmente este mensaje de error no me dice nada, alguien con alguna experiencia parecida que me pueda ayudar?

Gracias
Responder Con Cita
  #2  
Antiguo 09-05-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
No se si sea esto.. y no tengo forma de probarlo ahora, pero creo que podria ayudarte.. y es que no le estas poniendo nombre al foreign key. No parece lógico, porque el sistema debiera generar un nombre secuencial, pero como el error dice

Cita:
Name of Referential Constraint not defined in constraints table



Código:
ALTER TABLE "FINA_FACTURACION_H" ADD CONSTRANIT NOMBRE_DEL_CONSTRAINT  FOREIGN KEY ("COMP_ID", "CLIE_ID") 
REFERENCES FINA_CLIENTES ("COMP_ID", "CLIE_ID")
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 10-05-2003
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 22
erickperez6 Va por buen camino
no, no funciona, es una sentencia invalida
Responder Con Cita
  #4  
Antiguo 10-05-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por erickperez6
estoy creando una referencia foranea
¿estás creando la clave ajena sobre tablas que ya contienen datos?. Si es así, puede que los datos no cumplan con la regla de integridad referencial que intentas crear y por eso el servidor la rechaza.

Saludos.
Responder Con Cita
  #5  
Antiguo 10-05-2003
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 22
erickperez6 Va por buen camino
La tabla esta vacia, no contiene ningun dato
Responder Con Cita
  #6  
Antiguo 10-05-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

hum, pues ahora empieza a ser raro. Sólo se me ocurren dos posibilidades:

1. Que "COMP_ID" y "CLIE_ID" no sean clave primaria en FINA_CLIENTES. Aunque creo que debería saltar otro tipo de error.

2. Los metadatos de la base de datos están corruptos. En este último caso, aconsejo una verificación/reparación de la base de datos (gfix), o un backup/restore (gbak).

Saludos.

Última edición por kinobi fecha: 10-05-2003 a las 21:25:25.
Responder Con Cita
  #7  
Antiguo 10-05-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Thumbs down

No te molestes conmigo... pero creo que no estas haciendo ni el minimo esfuerzo por resolver tu problema, sino queres que otros lo resolvamos por vos.

en mi respuesta anterior, te dije que pusieras la siguiente sentencia:

Cita:
ALTER TABLE "FINA_FACTURACION_H" ADD
CONSTRANIT NOMBRE_DEL_CONSTRAINT
FOREIGN KEY ("COMP_ID", "CLIE_ID")
REFERENCES FINA_CLIENTES ("COMP_ID", "CLIE_ID")

sin embargo, la sentencia tiene un error de sintaxis, por lo que el servidor de interbase, correctamente te ha dicho "invalid sentence".

No te voy a decir cual es el error, pues espero que al menos trates de encontrarlo vos mismo...

Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 12-05-2003
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 22
erickperez6 Va por buen camino
Disculpame si no me supe expresar apropiadamente, por su puesto, luego de postear el mensage donde indicaba que la instruccion estaba incorrecta probe con el codigo SQL correcto el cual es el siguiente:

Código PHP:
ALTER TABLE "FINA_FACTURACION_H" ADD CONSTRAINT 
FINA_FACT_CLIE FOREIGN KEY 
("COMP_ID""CLIE_ID"
REFERENCES FINA_CLIENTES ("COMP_ID""CLIE_ID"
Pero como quiera sigue apareciendo el error, hice un backup y un restore a la base de datos y todavia el error aparecia. Verifique con el GFIX si existia algun error en la DB con el siguiente comando:

gfix -v -full "C:\midb.gdb" y no me desplego ningun mensaje de error que podia exisistir en la DB.

Esta DB es un poco grande, consta de unas 50 tablas y todas estan referenciadas, algunas tablas tienen unas 4 o 5 referencias foraneas, pero solo he tenido problema al crear esta, pienso que el problema debe de estar en alguna referencia de otra tabla la cual no me deja crear esta para conservar la integridad, pero no le veo mucho sentido ya que los campos "COMP_ID" y "CLIE_ID" de la tabla "FINA_CLIENTES" esta siendo referenciada por otra tabla sin ningun problema.
Responder Con Cita
  #9  
Antiguo 12-05-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

en la Borland Developer Network he encontrado una referencia de un problema similar al tuyo, aunque referido a la versión 4 de InterBase.

Te pongo el enlace porque es tan similar que es probable que pueda ayudarte ...

http://bdn.borland.com/article/0,1410,25303,00.html

Saludos.
Responder Con Cita
  #10  
Antiguo 12-05-2003
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 22
erickperez6 Va por buen camino
Gracias a todos !

Ya encontre el problema, extraje toda la metadata de la DB y observe que en la tabla "FINA_CLIENTES" habia un indice unico con los campos "COMP_ID" y "CLIE_ID", aparte del primary key que hace la misma funcion, entonces borre este indice unico y problema resuelto.
Responder Con Cita
  #11  
Antiguo 12-05-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

gracias por la información.

Tomo nota del asunto, ya que resulta extraño y sin lógica (aparente).

Saludos.
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
Problema al momento de crear objetos DANY OOP 5 28-11-2005 10:28:05
Problema con los Post_Events Aldo Firebird e Interbase 1 21-10-2005 12:58:10
Problema para capturar Errores carlos gonzalez Varios 9 21-06-2005 16:31:48
Problema con un parámetro de salida en un Stored Procedure taote Firebird e Interbase 5 09-06-2004 20:41:38
Problema con Database en Datamodule ciscu Conexión con bases de datos 2 08-04-2004 11:26:11


La franja horaria es GMT +2. Ahora son las 12:55:26.


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