SQL - necesito ayuda con este error: ORA-02270: no matching unique or primary key for this column-list

 
Vista:
sin imagen de perfil

necesito ayuda con este error: ORA-02270: no matching unique or primary key for this column-list

Publicado por Francesco (2 intervenciones) el 12/02/2022 12:46:54
TENGO LAS SIGUIENTES TABLAS. LA PRIMERA Y LA SEGUNDA SE CREAN CORRECTAMENTE, PERO AL INTENTAR CREAR LA TERCERA ME SALTA EL SIGUIENTE MENSAJE:

ORA-02270: no matching unique or primary key for this column-list

¿ALGUIEN SABE QUÉ OCURRE? HE BUSCADO EN FOROS Y LAS RESPUESTAS QUE HE ENCONTRADO NO ME HAN SERVIDO


create table hospital (
hospital_cod number(2),
nombre varchar2(10),
direccion varchar2(20),
tfno varchar2(8),
num_cama number(3),

constraint pk_1 primary key (hospital_cod)
);

create table sala (
hospital_cod number(2),
sala_cod number(2),
nombre varchar2(20),
num_cama number(3),

constraint fk_2 foreign key (hospital_cod) references hospital(hospital_cod),
constraint pk_2 primary key (hospital_cod, sala_cod)
);

create table plantilla (
hospital_cod number(2),
sala_cod number(2),
empleado_no number(4),
apellido varchar2(15),
funcion varchar2(10),
turno varchar2(1),
salario number(10),

constraint fk_3a foreign key (hospital_cod) references hospital(hospital_cod),
constraint fk_3b foreign key (sala_cod) references sala(sala_cod),
constraint pk_3 primary key (hospital_cod, sala_cod, empleado_no)
);
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
Imágen de perfil de Francisco
Val: 150
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

necesito ayuda con este error: ORA-02270: no matching unique or primary key for this column-list

Publicado por Francisco (62 intervenciones) el 15/02/2022 01:50:30
Hola

La clave de la sala estaba mal definida

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
create table hospital (
hospital_cod number(2),
nombre varchar2(10),
direccion varchar2(20),
tfno varchar2(8),
num_cama number(3),
 
constraint pk_1 primary key (hospital_cod)
);
 
create table sala (
hospital_cod number(2),
sala_cod number(2),
nombre varchar2(20),
num_cama number(3),
 
constraint pk_2 primary key (hospital_cod, sala_cod),
constraint fk_2 foreign key (hospital_cod) references hospital(hospital_cod)
);
 
create table plantilla (
hospital_cod number(2),
sala_cod number(2),
empleado_no number(4),
apellido varchar2(15),
funcion varchar2(10),
turno varchar2(1),
salario number(10),
 
constraint pk_3 primary key (hospital_cod, sala_cod, empleado_no),
constraint fk_3a foreign key (hospital_cod) references hospital(hospital_cod),
constraint fk_3b foreign key (hospital_cod, sala_cod) references sala(hospital_cod, sala_cod)
);

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

necesito ayuda con este error: ORA-02270: no matching unique or primary key for this column-list

Publicado por Francesco (2 intervenciones) el 16/02/2022 16:28:58
muchas gracias. Su solución me funciona. Solo una pregunta aclaratoria: para declarar que sala_cod es clave foránea de la tabla sala, hospital_cod también es una clave primaria de la tabla sala. ¿Es por eso por lo que tengo que declarar clave foránea a hospital_cod en la misma instrucción que para declarar que sala_cod es clave foránea o es por otro motivo? Gracias de antemano
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
Imágen de perfil de Francisco
Val: 150
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

necesito ayuda con este error: ORA-02270: no matching unique or primary key for this column-list

Publicado por Francisco (62 intervenciones) el 17/02/2022 17:15:20
Hola

La claves primarias pueden ser compuestas (uno o mas atributos) y alguno o todos los atributos ser foraneas a la vez, sucede sobre todo cuando las relacion es M:N o sea mucho a muchos.

Saludos
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