tabla primary foreign create crear con 11g sql oracle oracle11g primary-key

primary - Oracle SQL: recibe el error "no coincide con la clave única o primaria" y no sabe por qué



primary foreign key oracle (3)

Recibo este error al intentar crear una tabla y no sé por qué: [2016-07-05 14:08:02] [42000][2270] ORA-02270: no matching unique or primary key for this column-list

Esta pregunta me parece diferente (a mí) de una pregunta similar , porque en esa pregunta el OP hace referencia a una tabla con un PK compuesto, mientras que yo no.

Y aunque esta otra pregunta tiene el mismo código de error, es porque el OP hace referencia incorrectamente a la clave principal, lo que no creo que haya hecho.

¿Puede alguien más con experiencia en SQL educarme?

(Un par de cosas a tener en cuenta: 1) Sé que los nombres de la tabla / columna tienen pequeños errores / desviaciones de la convención, pero esto es para la tarea, y el docente exige que tenga las tablas y filas declaradas exactamente a su manera, incluso si no es -convencional. 2) Sí, eso es una tontería; pero no, no puedo cambiarlo o me marcan abajo).

CREATE TABLE Student_Course ( Stu_ID NUMBER(5) NOT NULL, Course_ID VARCHAR2(8) NOT NULL, Section# NUMBER(3), CONSTRAINT pk_stu_crse PRIMARY KEY (Stu_ID, Course_ID), CONSTRAINT fk_course_id FOREIGN KEY (Course_ID) REFERENCES course(Course_ID), CONSTRAINT fk_stu_id FOREIGN KEY (Stu_ID) REFERENCES student(Stu_ID), CONSTRAINT fk_section FOREIGN KEY (Section#) REFERENCES course(Section#) )

Solo hay dos tablas pequeñas con referencias, que son:

CREATE TABLE student ( Stu_ID NUMBER(5) PRIMARY KEY , Lname VARCHAR2(20), Fname VARCHAR2(20), Mi CHAR(1), Sex CHAR(1), Major VARCHAR2(15), Home_State CHAR(2) ); CREATE TABLE course ( Course_ID VARCHAR2(8) PRIMARY KEY , Section# NUMBER(3), C_Name VARCHAR2(30), C_Description VARCHAR2(30) );


Gracias a las buenas respuestas, estoy publicando mi código que corregí en función de la ayuda aquí. Espero que mis correcciones ayuden a otros en el futuro.

CREATE TABLE student ( Stu_ID NUMBER(5) PRIMARY KEY , Lname VARCHAR2(20), Fname VARCHAR2(20), Mi CHAR(1), Sex CHAR(1), Major VARCHAR2(15), Home_State CHAR(2) ); CREATE TABLE course ( Course_ID VARCHAR2(8) , Section# NUMBER(3) , C_Name VARCHAR2(30), C_Description VARCHAR2(30), CONSTRAINT pk_course PRIMARY KEY (Course_ID, Section#) ); CREATE TABLE Student_Course ( Stu_ID NUMBER(5) , Course_ID VARCHAR2(8) , Section# NUMBER(3) , CONSTRAINT pk_stu_crse PRIMARY KEY (Stu_ID, Course_ID, Section#), CONSTRAINT fk_stu FOREIGN KEY (Stu_ID) REFERENCES student(Stu_ID), CONSTRAINT fk_course_id FOREIGN KEY (Course_ID, Section#) REFERENCES course(Course_ID, Section#) );


Una clave externa es una referencia a una clave primaria en otra tabla.

La última restricción CONSTRAINT fk_section FOREIGN KEY (Section#) REFERENCES course(Section#) no funcionará - La Section# no es una clave principal en esa tabla