2

私は SQL を初めて使用すると言っても差し支えありません。そのため、テーブルにデータを挿入するコードを作成すると、エラー レポートを受け取りました。その意味を理解できないようです。誰かがそこにいることを願っています。私が犯しているばかげた間違いを教えて、多くのストレスを取り除くことができます^.^

これは私が得たエラーコードです:

エラー レポート: SQL エラー: ORA-02291: 整合性制約 (H.VENDOR_ID_FK) 違反 - 親キーが見つかりません 02291. 00000 - "整合性制約 (%s.%s) 違反 - 親キーが見つかりません" *原因: 外部キーvalue に一致する主キー値がありません。*処置: 外部キーを削除するか、一致する主キーを追加してください。

前もって感謝します!

4

1 に答える 1

1

これらすべてを実行すると、この時点の前にいくつかのエラーが発生しますが、ここではスキップします...この FK に対する最初のエラーは次のようです。

INSERT INTO parts_order VALUES
        (2
        ,2
        ,95115995
        ,'Delivered'
        ,'04/dec/2012'
        ,'01/jan/2013'
        ,'20/dec/2012'
        ,'Handler Pro'
        );

挿入句に列を配置して、どの行が表示されているかを確認できるようにすることをお勧めします(つまりINSERT INTO parts_order (order_id, job_id, vendor_id, ...) VALUES (4, 4, 95115995, ...)、また、あなた(および私たち)がテーブル定義を参照し直す必要がなく、定義が変更された場合の失敗を回避するため)また、暗黙の日付変換 (つまり、to_char('05/jan/2013', 'DD/mon/YYYY').

とにかく...それが不平を言っている制約はVENDOR_ID_FKであり、これはテーブル定義で確認できます:

CREATE TABLE parts_order
( order_id NUMBER(11)   
    CONSTRAINT order_id_pk  PRIMARY KEY
  ,job_id NUMBER(11)    
    CONSTRAINT job_id_fk REFERENCES maintenance(job_id)
  ,vendor_id    NUMBER(11)  
    CONSTRAINT vendor_id_fk REFERENCES parts_vendor(part_vendor_id)
  ,parts_status VARCHAR2(20)
  ,date_ordered DATE
  ,date_arrived DATE
  ,date_delivery_due    DATE
  ,part_name VARCHAR2(20) 
    CONSTRAINT part_name_nn NOT NULL);

・・・反対parts_vendor(part_vendor_id)です。エラーが言っているのは、vendor_id挿入しようと95115995している が親テーブルに存在しないということです。これは本当です。値、、およびparts_vendorを持つレコードのみを挿入します。part_vendor_id1234

制約は意図したとおりに機能しています。「親」が存在せずに「子」レコードを配置するのを止めています。parts_vendorID のレコードを作成するか、挿入しようとしている値を既存のものに95115995変更する必要があります。vendor_idparts_order

于 2013-02-21T16:08:22.317 に答える