2012-02-29 20 views
15

私はばかげているように感じますが、phpMyAdminインターフェイスのどこでも外来キーに制約を追加することができません。 CASCADE ON DELETEphpMyAdminで制約を追加する

私はこことphpMyAdmin wikiで同様の質問を探しましたが、何も見つかりませんでした。

私はクエリインターフェイス経由でこれを行うことができたことを知っていますが、私はグラフィカルインターフェイスを通してそれを行う方法を知りたいと思います。

+0

[phpMyAdminでの外部キーの設定?](http://stackoverflow.com/questions/459312/setting-up-foreign-keys-in-phpmyadmin) –

+1

私はそれを見つけて、助けてくれた。しかし、今解決された問題。 – Alex

+0

ああ、両方のテーブル(FKと参照されるテーブルはInnoDBか別のトランザクションエンジンである必要があります)。 –

答えて

30

まず、ストレージエンジンをInnoDBにする必要があります。次に、表を選択して[構造]タブに移動します。

テーブルの下に「リレーションビュー」が表示されます。それをクリックします。そこから、制約を追加することができます。

+0

ああ、ストレージエンジンが間違って設定されているため、私は制約を追加できませんでした。 – Alex

+0

あなたはウェルカムです、アレックス。お役に立てて嬉しいです。 – utsikko

+0

「+インデックス」と「リレーションビュー」は表示されません。外部キー制約の設定にお役立てください。 –

7

CASCADE

マスター(参照)テーブルの行は、(それぞれ更新)削除されるたびに、一致する外部キー列と子(参照)テーブルの各行は、(それぞれが削除されます。更新されました)。これはカスケード削除(update [2])と呼ばれます。

は、行が参照テーブルの値を参照する外部キーテーブルに存在する場合に値が更新または削除することができない

制限します。同様に、外部キー・テーブルからの参照がある限り、行を削除することはできません。

NO ACTION

NO ACTIONとRESTRICTは非常に似ています。 NO ACTIONとRESTRICTの主な違いは、NO ACTIONではテーブルの変更後に参照整合性チェックが行われることです。 RESTRICTは、UPDATEまたはDELETEステートメントを実行する前にチェックを行います。参照整合性チェックが失敗した場合は、両方の参照アクションが同じように動作します。UPDATEまたはDELETEステートメントはエラーになります。

SETのNULL

参照行が更新または削除されたときに参照する行の外部キーの値はNULLに設定されています。これは、参照元テーブルのそれぞれの列がNULL可能である場合にのみ可能です。 NULLのセマンティクスのため、外部キー列にNULLを持つ参照行には参照行は必要ありません。

関連する問題