2016-09-06 7 views
0

mysqlを使ってphymyadminの異なるテーブル間にリレーションを作成したいと思います。 カスケードオプションを追加したいのですが、カスケードオプションが関係を追加するたびに表示されるとは限りません。例えばPHPMyadminでテーブル間の関係を追加する

No Cascade OptionCascade option available

第1の画像内Iはユーザーグループとユーザーの表にusergroupid IDを関連付ける際に使用可能なカスケードオプションがありません。しかし、私がinvoicedetailsとtripmasterテーブルの請求書IDを関連付けるとき、2番目のイメージのように、私はカスケードオプションを利用できます。

なぜカスケードオプションが毎回利用できないのか理解できません。

答えて

0

外部キー制約を作成するためにテーブルと列が満たす必要のある条件がいくつかあります。

あなたの例で欠けている、スクリーンショットから見えるものは、整数値の長さです。両方とも同じ長さ(と記号...)を持つ必要がありますので、int(5)int(11)は互換性がありません。

また、すべての要件については、manual on foreign key constraintsを参照してください。

0

このような関係を構築する場合、キーとその一致する外部キーはまったく同じデータ型でなければなりません。

は、だからあなたの最初の例では、整数は、異なるサイズ(INT(5)とINT(11)のように、MySQLが必要な制約を作成することはできません、あなたはカスケード削除や更新可能にすることはできませんです。

2番目の例では、 、スクリーンショットからその明確ではないが、私はそのデータ型の一致を前提としています。

またその整数データ型の両方が符号付きまたは符号なしていることを確認します。一つは署名およびその他の符号なしている場合は、同じ問題に遭遇します。

+0

最初のスクリーンショットでは、私はusergroupにusergroupis int(2)というbooleanのusergroupとusersテーブルの外部キーusergroup idを追加します私はカスケードのオプションを取得していない場合でもテーブル。 invoiceid(int(5)とint(11))のサイズが異なっていても2番目のスクリーンショットでカスケードオプションが利用可能です。 –

+0

テーブル定義とサンプルデータをsqlfiddle.comに入れることができれば、より詳細な見方をすることができます。 –

関連する問題