【问题标题】:ORA-02291: integrity constraint (NAVY10.SYS_C00317513) violated - parent key not foundORA-02291: 违反完整性约束 (NAVY10.SYS_C00317513) - 未找到父键
【发布时间】:2013-03-25 02:36:15
【问题描述】:

我必须使用 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

其他表工作正常!

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

【问题讨论】:

  • INCLUDE_C 语句有一个或多个记录,其中 TOPIC_CConference_C 中不存在外键列值

标签: sql oracle ora-02291


【解决方案1】:

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

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

最好的方法是先加载父表,然后通过子表进行处理。为此,只需按照您定义它们的顺序加载表。如果这不起作用,则意味着您确实有一个违反外键的 Tnum 和/或 ConfID 值。

【讨论】:

  • @OMGPonies,graceemile:非常感谢,这对您有帮助!
猜你喜欢
  • 2016-03-12
  • 1970-01-01
  • 2020-07-19
  • 2018-04-18
  • 2014-06-12
  • 2018-05-23
  • 2018-11-13
  • 1970-01-01
  • 2018-09-09
相关资源
最近更新 更多