ORA-02291:完整性约束(NAVY10.SYS_C00317513)被违反-没有找到父键



我必须创建表并使用insert SQL语句和SQL LOADER实用程序插入数据。我使用Oracle 10g。下面是创建表的语句:

CREATE TABLE Employee_C (
    EID char(3), 
    Name varchar2(20), 
    Salary number(7,2), 
    MID char(3), 
    PRIMARY KEY (EID), 
    FOREIGN KEY (MID) REFERENCES Employee_C (EID)
);
CREATE TABLE Conference_C (
    ConfID char(6),
    Title varchar2(20), 
    Location varchar2(20), 
    Sdate date,  
    PRIMARY KEY (ConfID)
); 
CREATE TABLE Topic_C (
    Tnum char(3), 
    Title varchar2(20), 
    PRIMARY KEY (Tnum)
);
CREATE TABLE Includes_C (
    Tnum char(3), 
    ConfID char(6), 
    PRIMARY KEY (Tnum,ConfID), 
    FOREIGN KEY (Tnum) REFERENCES Topic_C, 
    FOREIGN KEY (ConfID) REFERENCES Conference_C
);
CREATE TABLE Deals_C (
    EID char(3), 
    ConfID char(6), 
    PRIMARY KEY (EID,ConfID), 
    FOREIGN KEY (EID) REFERENCES Employee_C, 
    FOREIGN KEY (ConfID) REFERENCES Conference_C
);

使用INSERT SQL语句将数据插入到Topic_C表中,使用SQL loader实用程序将数据插入到其他4个表中。

所以我的问题是,当我运行sql loader,我得到以下错误:

Record 1: Rejected - Error on table INCLUDES_C.
ORA-02291: integrity constraint (NAVY10.SYS_C00317513) violated - parent key not found

其他表工作得很好!

我不知道我哪里错了,请澄清一下谢谢你

正如上面提到的@OMGPonies,当您将记录加载到Includes_C时,会发生以下一种或两种情况:

  1. Includes_C.Tnum不在Topic_C
  2. Includes_C.ConfID不在Conference_C

最好的方法是先加载父表,然后再加载子表。要做到这一点,只需按照定义表的顺序加载表。如果不工作,这意味着您确实有Tnum和/或ConfID值违反了外键。