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
Другие таблицы работают отлично!
Я не знаю, где я иду не так, пожалуйста, уточните Спасибо
1 ответ
Как упоминалось выше @OMGPonies, когда вы загружаете записи в Includes_C
происходит одно или оба из следующих событий:
Includes_C.Tnum
не вTopic_C
Includes_C.ConfID
не вConference_C
Наилучшим подходом было бы сначала загрузить родительские таблицы, а затем работать с дочерними. Для этого просто загрузите таблицы в том порядке, в котором вы их определили. Если это не сработает, значит, у вас действительно есть Tnum
и / или ConfID
значение, которое нарушает внешний ключ.