私は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
DBエンジンの変更をInnoDBに適用した後も、fkが親のPKと一致しない子テーブルに行を追加することはできます。混乱している。 *他のコメントがないので、自動的に承認されたので、私の答えを削除することはできません... – brooklynsweb
しかし、驚くべきことに、同じデータベースに2つの新しいテーブルを作成して、エンジンを最初からInnoDBに設定し、同じ制約をテストすると、正しく発射されました。これは、MyISAMを使用して作成されたテーブルがデータで満たされ、エンジンがInnoDBに変更されても、それらの制約は無視されることを意味しますか?これは私が経験している動作です。 – brooklynsweb