2010-11-30 30 views
0

テーブルは以下のとおりです。accepted_quote_id外部キー制約の問題

  • ID
  • 問い合わせ

supplier_enquiry

  • ID

引用

  • ID
  • は、以下のように
  • である

制約をsupplier_enquiry_id enquiry_id enquiry_id:

  • CONSTRAINT supplier_enquiry_ibfk_1 FOREIGN KEY(enquiry_id)DELETE CASCADE ON enquiryid)を参照

  • CONSTRAINT quote_ibfk_1 FOREIGN KEY(supplier_enquiry_idsupplier_enquiryid)を参照DELETE CASCADE ON enquiry_ibfk_9 FOREIGN

  • CONSTRAINTキー(accepted_quote_id)参考文献quoteid

だから私は仕事にこれを期待する方法です:あなたは「お問い合わせ」を削除する場合は、「supplier_enquiry」を削除した場合

  1. それは子供のsupplier_enquiry「記録
  2. を削除それはあなたが引用のID

ことを「お問い合わせ」参照している場合、「引用符」を削除cannnot

  • 子供引用符 "レコードを削除します私が持っている問題は、「照会」レコードを削除するときです。子レコードを最初に削除する必要があるため、 'supplier_enquiry'と 'quote'の場合、 'accepted_quote_id'が 'quote'を参照する場合、 'inquiry'は削除できません。

    どのように私はこの問題を克服できますか?

  • 答えて

    1

    他の2つのテーブルを照会に依存させることで、循環参照を取り除くことができます。

    だから:

    quote.enquiry_id参照が

    をenquiry.idそして:明確ではない場合がある。

    supplier_enquiry.enquiry_id参照が

    EDITをenquiry.id。 enquiry_idをenquiry_idに参照して引用符テーブルに新しい制約を作成してから削除することをお勧めします。enquiry_ibfk_9

    0

    削除する前に参照をNULLに更新してください。