So i'm practicing some sql coding for a test and I can't get a foreign key to reference a primary key.
Here's the table that doesn't work:
CREATE TABLE ASSIGNMENT( ASSIGN_ID NUMBER(2) NOT NULL, START_DATE DATE, END_DATE DATE, BUDGET NUMBER (10,2), MANAGER_ID NUMBER(2), PRIMARY KEY (ASSIGN_ID,MANAGER_ID), FOREIGN KEY (MANAGER_ID) REFERENCES EMPLOYEE(EMP_ID) );
Here's the table it is referencing:
CREATE TABLE EMPLOYEE( EMP_ID NUMBER(2) NOT NULL, NAME VARCHAR(40), OFFICE VARCHAR(20), EXPERT_ID NUMBER(2), PRIMARY KEY (EMP_ID,EXPERT_ID), FOREIGN KEY (EXPERT_ID) REFERENCES EXPERTISE(EXPERT_ID) );
Whenever I try to run the script it always comes back with:
Error report -
SQL Error: ORA-02270: no matching unique or primary key for this column-list
02270. 00000 - "no matching unique or primary key for this column-list"
*Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement
gives a column-list for which there is no matching unique or primary key constraint in the referenced table.
*Action: Find the correct column names using the ALL_CONS_COLUMNS catalog view
I've looked around but can't seem to find the problem. Any help would be appreciated.
Here's the full code (haven't tested the last table yet):
CREATE TABLE EXPERTISE( EXPERT_ID NUMBER(2) NOT NULL, DESCRIPTION VARCHAR(50), HOURLY_RATE NUMBER(3,2), CHARGE_RATE NUMBER(3,2), PRIMARY KEY(EXPERT_ID) ); CREATE TABLE EMPLOYEE( EMP_ID NUMBER(2) NOT NULL, NAME VARCHAR(40), OFFICE VARCHAR(20), EXPERT_ID NUMBER(2), PRIMARY KEY (EMP_ID,EXPERT_ID), FOREIGN KEY (EXPERT_ID) REFERENCES EXPERTISE(EXPERT_ID) ); CREATE TABLE ASSIGNMENT( ASSIGN_ID NUMBER(2) NOT NULL, START_DATE DATE, END_DATE DATE, BUDGET NUMBER (10,2), MANAGER_ID NUMBER(2), PRIMARY KEY (ASSIGN_ID,MANAGER_ID), FOREIGN KEY (MANAGER_ID) REFERENCES EMPLOYEE(EMP_ID) ); CREATE TABLE ALLOCATION( EMP_ID NUMBER(3) NOT NULL, ASSIGN_ID NUMBER(3) NOT NULL, DAYS_WORKED_ON DATE, HOURS_WORKED_ON DATE, PRIMARY KEY(EMP_ID,ASSIGN_ID), FOREIGN KEY(EMP_ID) REFERENCES EMPLOYEE(EMP_ID), FOREIGN KEY(ASSIGN_ID) REFERENCES ASSIGNMENT(ASSIGN_ID) );
I'm using Oracle SQL Developer to make it