我正在尝试添加外键但出现错误:
ORA-02298:无法验证(user.SECTION_FK1) - 未找到父键
我的代码:
ALTER TABLE SECTION
ADD CONSTRAINT SECTION_FK1 FOREIGN KEY
(
INSTRUCTOR_ID
)
REFERENCES INSTRUCTOR
(
INSTRUCTOR_ID
)
ENABLE;
答案 0 :(得分:0)
理想情况下,你应该遵循@ mathguy评论中描述的创建表格的整个过程。现在你最终遇到了子表有数据但父表没有数据的情况。
因此,您可以选择一个选项(我假设您不是整个表创建过程的一部分。)是使用section
中可用的数据填充教师。
表INSTRUCTOR_ID
中的INSTRUCTOR
应该是Primary key
或Unique key
,我也认为它是PRIMARY KEY
。如果没有,请查看本文如何在现有表格上创建INSTRUCTOR
:https://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