2013-03-25 55 views
2

我必須使用INSERT SQL語句和SQL LOADER實用程序創建表並插入數據。我正在使用Oracle 10g。 下列是創建表的語句:ORA-02291:違反了完整性約束(NAVY10.SYS_C00317513) - 未找到父鍵

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加載實用程序將數據插入到其他4個表。

所以我的問題是,當我運行SQL裝載機,我得到以下錯誤:

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

其他表都將工作完全正常!

我不知道我錯了,請澄清 謝謝

+0

「INCLUDE_C」語句有一個或多個記錄,其中外鍵列的值不存在於「TOPIC_C」或「Conference_C」中 – 2013-03-25 02:40:26

回答

1

如上所述@OMGPonies,當你加載記錄放入Includes_C一個或兩個以下的正在發生的事情:

  1. Includes_C.TnumTopic_C
  2. Includes_C.ConfIDConference_C

最好的方法是首先加載父表,然後通過孩子。爲此,只需按照您定義的順序加載表格即可。如果這不起作用,這意味着你真的有一個Tnum和/或ConfID值違反了外鍵。

+0

@ OMGPonies,graceemile:非常感謝,幫助! – Navy 2013-03-25 14:43:07

相關問題