2016-11-25 20 views
-1

として複合主キーIは、MySQLにこれを実行しようとする:A、B、C列の最初のテーブルを作成しのMySQL:外部キー

およびAとB に複合主キーが第二のテーブルAを作成します、B、D、E列をA、B、Dを主キーとし、もちろんA、Bを第1の表から外来語として参照する。

私は、列を作成し、キーとforeigns制約を追加し、私は適用しようとすると、私はこのエラーを受け取るためにMySQLのワークベンチを使用し

ERROR 1215:外部キー制約に

を追加することはできません事は、私ということです私のデザインに何が間違っているのか分かりません。

私を助けてくれますか?

+0

[mcve]と[ask]を読んでください。特にあなたのDDLを見せてください。おそらく、FKの参照された列がPKまたはUNIQUE NOT NULLとして宣言されなければならないことに気付かないでしょう。 (ここでは、ABDEのABですが)「外部キーとして参照されています」は意味をなさない。 FKは参照を行います。そして私はあなたが実際にABDE(AB)の参照ABC(AB)を望んでいると思います。あなたの問題の説明をグーグルしてください(正しい方法で「参考文献」を使用してください)。これはFAQです。 – philipxy

答えて

0

問題は、2番目のテーブルに(A, B)のペアがあり、最初のテーブルに一致するものがないことです。

を実行し、この:このクエリでは

select secondTable.A, secondTable.B 
from secondTable 
where not exists (select 1 
        from firstTable 
        where firstTable.A = secondTable.A and firstTable.B = secondTable.B); 

あなたがfirstTableですべてのレコードと一致しないsecondTableAB値を検索します。

があなたのforeign keyを作成することができるようにするには、secondTableまたはinsertその試合intofirstTableからそれらのレコードを削除するかが必要になります。

+0

ありがとうございました。実際には、私はそれを構築しているので、2番目のテーブルにはデータがありません。 –

+0

@RonanQuintin、テーブルの種類は一致しますか?コードを教えてもらえますか? –