2

INSERTSQLステートメントとSQLLOADERユーティリティを使用して、テーブルを作成し、データを挿入する必要があります。Oracle10gを使用しています。以下は、createtableステートメントです。

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

他のテーブルは完全に正常に機能しています!

どこが間違っているのかわかりません。明確にしてくださいありがとうございます

4

1 に答える 1

1

上記の@OMGPoniesのように、レコードをIncludes_C次のいずれかまたは両方にロードすると、次のようになります。

  1. Includes_C.Tnum入ってないTopic_C
  2. Includes_C.ConfID入ってないConference_C

最善のアプローチは、最初に親テーブルをロードしてから、子を処理することです。これを行うには、テーブルを定義した順序でロードするだけです。それが機能しない場合、それはあなたが本当に外部キーに違反するTnumおよび/または値を持っていることを意味します。ConfID

于 2013-03-25T03:10:21.677 に答える