2016-12-15 12 views
0

私はphpMyAdminでWAMPスタックを使用しており、dbエンジンはMyISAMです。私は2つのテーブルを作成しました:親、子。親テーブルでは、私はPKとしてID列を設定し、子テーブルではFKとしてparent_id列を設定しました。私の理解に基づいて、この関係ではchild.parent_idの値がparent.idの値と一致しないレコードを子テーブルに追加することはできません。私の外部キー関係が制約ルールを適用しないのはなぜですか?

次に、1行のデータをParentテーブルに挿入しました(したがって、1レコードのidカラム= 1を作成します)。しかし、私はparent_id = 2でChildテーブルに行を挿入しようとしました。

なぜですか?テーブル構造の

スナップショット: http://i.imgur.com/qMbZuI5.png

+0

DBエンジンの変更をInnoDBに適用した後も、fkが親のPKと一致しない子テーブルに行を追加することはできます。混乱している。 *他のコメントがないので、自動的に承認されたので、私の答えを削除することはできません... – brooklynsweb

+0

しかし、驚くべきことに、同じデータベースに2つの新しいテーブルを作成して、エンジンを最初からInnoDBに設定し、同じ制約をテストすると、正しく発射されました。これは、MyISAMを使用して作成されたテーブルがデータで満たされ、エンジンがInnoDBに変更されても、それらの制約は無視されることを意味しますか?これは私が経験している動作です。 – brooklynsweb

答えて

0

私の疑惑は、Quoraのから答えた:MyISAMテーブルはこの制約を強制しません。 InnoDBに変更されました。

+0

他のコメントがないので、自動的に承認されたので、私の回答を削除できません... – brooklynsweb

関連する問題