简体   繁体   中英

How to add primary and foreign key constraints correctly in Oracle?

I am trying to alter tables to add the necessary primary and foreign keys, but I am really struggling to run the code without getting any errors.

The script I have written for adding PKs and FKs is the following:

ALTER TABLE PROJDEPT DROP CONSTRAINT PROJDEPT_pk;
ALTER TABLE EMPLOYEE DROP CONSTRAINT EMPLOYEE_pk DROP CONSTRAINT fk_EMPLOYEE;
ALTER TABLE PROJECT DROP CONSTRAINT PROJECT_pk DROP CONSTRAINT fk_PROJECT;
ALTER TABLE PROJECTTASK DROP CONSTRAINT PROJECTTASK_pk DROP CONSTRAINT fk_PROJECTTASK DROP CONSTRAINT fk_PROJECTTASK2;

ALTER TABLE PROJDEPT ADD CONSTRAINT PROJDEPT_pk PRIMARY KEY (Proj_Dept_ID);
ALTER TABLE EMPLOYEE ADD CONSTRAINT EMPLOYEE_pk PRIMARY KEY (Employee_ID);
ALTER TABLE PROJECT ADD CONSTRAINT PROJECT_pk PRIMARY KEY (Project_ID);
ALTER TABLE PROJECTTASK ADD CONSTRAINT PROJECTTASK_pk PRIMARY KEY (Project_ID, Employee_ID);

ALTER TABLE EMPLOYEE 
  ADD CONSTRAINT fk_EMPLOYEE 
  FOREIGN KEY (Proj_Dept_ID)
  REFERENCES PROJDEPT(Proj_Dept_ID);

ALTER TABLE PROJECT
  ADD CONSTRAINT fk_PROJECT 
  FOREIGN KEY (Proj_Dept_ID)
  REFERENCES PROJDEPT(Proj_Dept_ID);

ALTER TABLE PROJJECTTASK 
  ADD CONSTRAINT fk_PROJECTTASK FOREIGN KEY (Project_ID) REFERENCES PROJECT(Project_ID),
  ADD CONSTRAINT fk_PROJECTTASK2 FOREIGN KEY (Employee_ID) REFERENCES EMPLOYEE(Employee_ID);

The ER Diagram I am trying to put into Oracle is down below. Any help would be greatly appreciated!

在此处输入图像描述

Drop the constraints in the reverse order that you create them.

Also, you've misspelt PROJECTTASK as PROJJECTTASK .

ALTER TABLE PROJECTTASK DROP CONSTRAINT PROJECTTASK_pk
                        DROP CONSTRAINT fk_PROJECTTASK
                        DROP CONSTRAINT fk_PROJECTTASK2;

ALTER TABLE EMPLOYEE DROP CONSTRAINT EMPLOYEE_pk DROP CONSTRAINT fk_EMPLOYEE;
ALTER TABLE PROJECT DROP CONSTRAINT PROJECT_pk DROP CONSTRAINT fk_PROJECT;
ALTER TABLE PROJDEPT DROP CONSTRAINT PROJDEPT_pk;

ALTER TABLE PROJDEPT ADD CONSTRAINT PROJDEPT_pk PRIMARY KEY (Proj_Dept_ID);
ALTER TABLE PROJECT ADD CONSTRAINT PROJECT_pk PRIMARY KEY (Project_ID);
ALTER TABLE PROJECT
  ADD CONSTRAINT fk_PROJECT 
  FOREIGN KEY (Proj_Dept_ID)
  REFERENCES PROJDEPT(Proj_Dept_ID);

ALTER TABLE EMPLOYEE ADD CONSTRAINT EMPLOYEE_pk PRIMARY KEY (Employee_ID);
ALTER TABLE EMPLOYEE 
  ADD CONSTRAINT fk_EMPLOYEE 
  FOREIGN KEY (Proj_Dept_ID)
  REFERENCES PROJDEPT(Proj_Dept_ID);

ALTER TABLE PROJECTTASK ADD CONSTRAINT PROJECTTASK_pk PRIMARY KEY (Project_ID, Employee_ID);

ALTER TABLE PROJECTTASK 
  ADD CONSTRAINT fk_PROJECTTASK FOREIGN KEY (Project_ID) REFERENCES PROJECT(Project_ID);

ALTER TABLE PROJECTTASK 
  ADD CONSTRAINT fk_PROJECTTASK2 FOREIGN KEY (Employee_ID) REFERENCES EMPLOYEE(Employee_ID);

db<>fiddle here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM