SQL - Problema con FK

 
Vista:

Problema con FK

Publicado por Rosa (1 intervención) el 15/06/2009 17:19:55
Hola, tengo un problema con las FK, al crear la tabla importe_poliza en la linea FOREIGN KEY (id_poliza) REFERENCES poliza(id_poliza) se salta el siguiente error:

No hay claves principales ni candidatas en la tabla a la que se hace referencia ('poliza') que concuerden con la lista de columnas que hace la referencia en la clave externa 'polizas_importe'.

Sin embargo la tabla poliza si tiene clave primaria: PRIMARY KEY (id_poliza, id_cliente)

CREATE TABLE poliza(
id_poliza INT,
id_cliente INT,
PRIMARY KEY (id_poliza, id_cliente),
nome VARCHAR(100) NOT NULL,
tipo CHAR(1) CHECK (tipo = '1' or tipo = '2'),
FOREIGN KEY (id_cliente) REFERENCES clientes(id_cliente)

)

CREATE TABLE importe_poliza(
id_poliza INT PRIMARY KEY,
cantidade INT NOT NULL,
dende DATETIME NOT NULL,
ata DATETIME,
CONSTRAINT polizas_importe FOREIGN KEY (id_poliza) REFERENCES poliza(id_poliza)

)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con FK

Publicado por Juan Manuel Castañeda (16 intervenciones) el 26/06/2009 23:01:06
polizas_importe establece una referencia entre un campo de valor único(poliza_importe.id_poliza) y otro no único, parte de una clave compuiesta,poliza(id_poliza), debiendo .
Tiene errores de diseño en la base.
debería hacer:
ALTER TABLE POLIZAS DROP PRIMARY KEY,ADD PRIMARY KEY(ID_POLIZA);
ALTER TABLE importe_poliza DROP PRIMARY KEY,ADD PRIMARY KEY(ID_Poliza,dende),DROP CONSTRAINT poliza_importe,ADD CONSTRAINT poliza_importe FOREIGN KEY(id_poliza) REFERENCES POLIZAS(isd_poliza) ON DELETE RESTRICT ON UPDATE CASCADE;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar