2016-07-05 19 views
2

ich diesen Fehler empfangen, wenn eine Tabelle zu erstellen versuchen, und ich weiß nicht, warum: [2016-07-05 14:08:02] [42000][2270] ORA-02270: no matching unique or primary key for this column-listOracle SQL: Empfangen ‚keine passenden einzigartigen oder Primärschlüssel‘ Fehler und weiß nicht, warum

Diese Frage (für mich) scheint von einer similar question anders zu sein, weil in dieser Frage das OP eine Tabelle mit einer zusammengesetzten PK referenziert, während ich nicht bin.

Und während dieser other question hat den gleichen Fehlercode, ist es, weil das OP ist falsch verweist auf den Primärschlüssel, die ich nicht denke Ich tat.

Darf ich jemand erfahrener in SQL erziehen?

(Ein paar Dinge zu beachten: 1) Ich weiß, die Tabelle/Spalte Namen haben kleine Fehler/Abweichungen von der Konvention, aber das ist für Hausaufgaben, und der Lehrer erfordert, dass ich die Tabellen und Zeilen genau sein übrigens, auch wenn es nicht konventionell ist. 2) Ja, das ist dumm; aber nein, ich kann es nicht ändern oder ich bekomme markiert unten)

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#) 
) 

Es gibt nur zwei kleine, referenzierten Tabellen, die da sind:.

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) 
); 

Antwort

4

Ein Fremdschlüssel ist ein Verweis auf ein Primärschlüssel in einer anderen Tabelle.

Die letzte Einschränkung CONSTRAINT fk_section FOREIGN KEY (Section#) REFERENCES course(Section#) wird nicht funktionieren - Section# in dieser Tabelle keinen Primärschlüssel ist

0

Dank guten Antworten, ich bin Entsendung mein Code, die ich korrigiert basierend auf Hilfe hier. Hoffe, meine Korrekturen helfen anderen in der Zukunft.

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#) 
);