2016-12-15 47 views
0

我正在使用phpMyAdmin的WAMP堆栈,数据库引擎是MyISAM。我创建了两个表格:Parent,Child。在Parent表中,我将id列设置为PK,并在Child表中将parent_id列设置为FK。根据我的理解,这种关系不会允许我将记录添加到child.parent_id的值与parent.id中的任何值不匹配的子表中。为什么我的外键关系不适用约束规则?

然后我插入一行数据到父表中(从而创建1个记录,其id列= 1)。但后来我试图用parent_id = 2插入一行到Child表中,它允许我。

为什么?

快照表结构: http://i.imgur.com/qMbZuI5.png

+0

在将数据库引擎更改应用于InnoDB之后,仍然允许将行添加到子表中,该子表的fk不匹配任何父级的PK。困惑。 *也不能删除我的答案,因为它被自动批准,因为没有其他评论... – brooklynsweb

+0

但令人惊讶的是,当我在同一个数据库中创建两个新表,并从一开始就将它们的引擎设置为InnoDB,然后尝试测试相同的约束,它确实触发了。这是否意味着使用MyISAM创建,然后充满数据,然后将其引擎更改为InnoDB的表仍然忽略这些约束?这是我所经历的行为。 – brooklynsweb

回答

0

我的怀疑是从Quora的回答:MyISAM不强制执行此约束。改为InnoDB。

+0

无法删除我的答案,因为它被自动批准,因为没有其他评论... – brooklynsweb