Mysql外键和删除记录

Mysql外键和删除记录,mysql,foreign-keys,Mysql,Foreign Keys,我创建了两个表,它们有一个简单的fk关系。各表如下: table_1 field_1 (primary key) table_3 field_1 (fk on table_1) field_2 (fk on table_2) 然后我用下面的行创建了FK: ALTER TABLE `table_2` ADD CONSTRAINT `fk_table_2` FOREIGN KEY (field_1`) REFERENCES `table_1` (`field_1`); 我

我创建了两个表,它们有一个简单的fk关系。各表如下:

table_1
   field_1 (primary key)

table_3
   field_1 (fk on table_1)
   field_2 (fk on table_2)
然后我用下面的行创建了FK:

ALTER TABLE `table_2` 
ADD CONSTRAINT `fk_table_2` 
FOREIGN KEY (field_1`) REFERENCES `table_1` (`field_1`);
我期望的是,如果我试图删除表_1中字段_1=x的一条记录,并且表_2中存在与字段_1具有相同x值的另一条记录,我应该会得到一个错误。 事实上,我没有得到任何错误,记录从表1中删除,在表2中留下一个孤儿记录。 我不使用delete级联,因为我想避免这种情况


为什么我没有收到任何错误?

您需要在约束中添加一个ON DELETE CASCADE子句。DELETE CASCADE将删除子项。op希望引发错误。它应该引发错误,默认行为是RESTRICT。看看哪个引擎,InnoDb还是MyIsam?MySql中的外键只为InnoDb实现,因为MyIsam外键约束被忽略了。@kordirko:该死的,你是对的!我总是忘记这一点,我使用的主机使我无法切换到InnoDb: