error creando relacion

10/06/2004 - 17:20 por Roberto Quintela | Informe spam
Hola.

Estoy intentando crear una relación de uno a varios entre estas 2 tablas:
PROYECTOS y PREVISIONES

la tabla PROYECTOS tiene entre otros muchos campos, un campo clave
"CODPROY-nvarcha(6)"
la tabla PREVISIONES tiene 3 campos clave "CODPROY-nvarcha(6)";
"CODEMPL-nvarchar(3)";"FECHA-smallint(4)" y un campo "HORAS-real(4)"

El caso es que al ejecutar el procedimiento:
alter table PREVISIONES with nocheck add constraint FK_PREVISIONES_PROYECTOS
foreign key (CODPROY) references PROYECTOS(CODPROY) ON UPDATE CASCADE

Me da el siguiente error:
No hay claves principales ni candidatas en la tabla a la que se hace
referencia ('PROYECTOS') que concuerden con la lista de columnas que hace la
referencia en la clave externa 'FK_PREVISIONES_PROYECTOS'.

¿Como que no?

En fin, si a alguien se le ocurre algo agradezco su colaboración.

Gracias y un saludo

Preguntas similare

Leer las respuestas

#1 Maxi
10/06/2004 - 19:27 | Informe spam
Hola y estas seguro que ese campo es Primary key?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Roberto Quintela" escribió en el mensaje
news:
Hola.

Estoy intentando crear una relación de uno a varios entre estas 2 tablas:
PROYECTOS y PREVISIONES

la tabla PROYECTOS tiene entre otros muchos campos, un campo clave
"CODPROY-nvarcha(6)"
la tabla PREVISIONES tiene 3 campos clave "CODPROY-nvarcha(6)";
"CODEMPL-nvarchar(3)";"FECHA-smallint(4)" y un campo "HORAS-real(4)"

El caso es que al ejecutar el procedimiento:
alter table PREVISIONES with nocheck add constraint


FK_PREVISIONES_PROYECTOS
foreign key (CODPROY) references PROYECTOS(CODPROY) ON UPDATE CASCADE

Me da el siguiente error:
No hay claves principales ni candidatas en la tabla a la que se hace
referencia ('PROYECTOS') que concuerden con la lista de columnas que hace


la
referencia en la clave externa 'FK_PREVISIONES_PROYECTOS'.

¿Como que no?

En fin, si a alguien se le ocurre algo agradezco su colaboración.

Gracias y un saludo







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.698 / Virus Database: 455 - Release Date: 02/06/2004
Respuesta Responder a este mensaje
#2 Javier Loria
11/06/2004 - 05:40 | Informe spam
Hola Roberto:
No basta con ser llave debe ser Llave Primario o UNIQUE. Revisa que la
tabla proyectos tenga la columna codProy en cualquiera de las anteriores.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Roberto Quintela escribio:
Hola.

Estoy intentando crear una relación de uno a varios entre estas 2
tablas: PROYECTOS y PREVISIONES

la tabla PROYECTOS tiene entre otros muchos campos, un campo clave
"CODPROY-nvarcha(6)"
la tabla PREVISIONES tiene 3 campos clave "CODPROY-nvarcha(6)";
"CODEMPL-nvarchar(3)";"FECHA-smallint(4)" y un campo "HORAS-real(4)"

El caso es que al ejecutar el procedimiento:
alter table PREVISIONES with nocheck add constraint
FK_PREVISIONES_PROYECTOS foreign key (CODPROY) references
PROYECTOS(CODPROY) ON UPDATE CASCADE

Me da el siguiente error:
No hay claves principales ni candidatas en la tabla a la que se hace
referencia ('PROYECTOS') que concuerden con la lista de columnas que
hace la referencia en la clave externa 'FK_PREVISIONES_PROYECTOS'.

¿Como que no?

En fin, si a alguien se le ocurre algo agradezco su colaboración.

Gracias y un saludo
Respuesta Responder a este mensaje
#3 Maxi
11/06/2004 - 14:31 | Informe spam
Ojo que aca el PK no es un solo campo como vos nos has indicado, revisalo
bien si?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Roberto Quintela" escribió en el mensaje
news:
Hola.

Creo que puedo estar seguro de ello y con la foto que te mando mas si


cabe.

En Access esto funcionaba perfectamente por so no entiendo que puede estar
pasando.

Gracias y salu2









Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.698 / Virus Database: 455 - Release Date: 02/06/2004
Respuesta Responder a este mensaje
#4 Javier Loria
11/06/2004 - 15:07 | Informe spam
Hola Roberto:
La tabla proyectos tiene como llave primaria CodProy-NContrato. Esto
significa que para identificar una fila de este tabla necesitamos ambos
datos, en la Tabla de Previsiones la llave Foranea debe establecerse basada
en 2 columnas en este caso debe ser:
ALTER TABLE Previsiones
ADD CONSTRAINT FK_Revisiones_Proyectos
FOREING KEY (CodProy, NContrato)
REFERENCES Proyectos(CodProy, NContrato)
Esto es asumiendo que existe en Revisiones una columna con el NContrato.
Si esta columna NO existe no se puede establecer la relacion, porque no
existe forma de asociar una Revision con un Proyecto-Contrato.
Lo cual me deja la duda de si no debieras cambiar el esquema y tener las
siguientes Tablas:
Proyectos-Contratos-Revisiones. El primero tiene como llave Primaria
CodProy, el segundo CodProy-NContrato y Revisiones si pueden asociarse
unicamente con Proyectos, CodProy mas otras columnas, y si pueden asociarse
con Contratos CodProy-NContrato y otras columnas.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Roberto Quintela escribio:
Hola.

No se si con la imagen queda demostrado o sigo equivocandome en algo.

Gracias y un saludo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida