SQL:我试图添加一个外键但它给我错误

时间:2018-03-31 00:22:36

标签: oracle

我正在尝试添加外键但出现错误:

  

ORA-02298:无法验证(user.SECTION_FK1) - 未找到父键

我的代码:

ALTER TABLE SECTION
ADD CONSTRAINT SECTION_FK1 FOREIGN KEY
(
  INSTRUCTOR_ID 
)
REFERENCES INSTRUCTOR
(
  INSTRUCTOR_ID 
)
ENABLE;

1 个答案:

答案 0 :(得分:0)

理想情况下,你应该遵循@ mathguy评论中描述的创建表格的整个过程。现在你最终遇到了子表有数据但父表没有数据的情况。

因此,您可以选择一个选项(我假设您不是整个表创建过程的一部分。)是使用section中可用的数据填充教师。

INSTRUCTOR_ID中的INSTRUCTOR应该是Primary keyUnique key,我也认为它是PRIMARY KEY。如果没有,请查看本文如何在现有表格上创建INSTRUCTORhttps://www.techonthenet.com/oracle/primary_keys.php

然后,您可以填充SECTION表,从NOT NULL中选择唯一的教师。此处第一个查询中的假设是其他列的 none 具有INSERT INTO INSTRUCTOR (INSTRUCTOR_ID) SELECT DISTINCT INSTRUCTOR_ID FROM SECTION; Update INSTRUCTOR SET <other columns> = <value>, .. where INSTRUCTOR_ID = <id> .... ... 或其他检查约束。

SECTION

OR

INSERT INTO INSTRUCTOR (INSTRUCTOR_ID,other_columns, ....) VALUES ( <instructor_id> , <other_column_values> ...,); INSERT INTO .. 导出不同的instructor_id的多个插入,修改脚本中的其他值。

instructor_id

因此,一旦确保section表中INSTRUCTOR表中的所有ALTER TABLE SECTION ADD CONSTRAINT SECTION_FK1 FOREIGN KEY (INSTRUCTOR_ID) REFERENCES INSTRUCTOR (INSTRUCTOR_ID) ENABLE; 都可用,您就可以运行alter脚本来添加外键。

setter