我必须使用INSERT SQL语句和SQL LOADER实用程序创建表并插入数据。我正在使用Oracle 10g。 以下是create table语句:
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
其他表格工作正常!
我不知道我哪里出错了,请澄清一下 谢谢
答案 0 :(得分:1)
正如上面提到的@OMGPonies,当您将记录加载到Includes_C
时,会发生以下一种或两种情况:
Includes_C.Tnum
不在Topic_C
Includes_C.ConfID
不在Conference_C
最好的方法是首先加载父表,然后逐步完成子表。为此,只需按照您定义的顺序加载表。如果这不起作用,则意味着您确实拥有违反外键的Tnum
和/或ConfID
值。