HOW TO:当表A上的记录被删除时,表B上与表A相关的所有记录都应该被删除?

时间:2011-05-01 15:01:06

标签: mysql mysql-workbench table-relationships

考虑以下方案:

table relations

我们需要确保,如果关联被删除,那么属于该关联的所有狗也应该被删除。

然而,在执行此操作时,保持Association和Dog表之间实际存在的关系是有道理的,因为每个关联可以有几个Dogs,但是,一个Dog只属于一个Association。所以我相信外键配置是正确的。

我相信我应该在某处应用Cascade,但我没有看到。 :(

请咨询

2 个答案:

答案 0 :(得分:5)

选择“Dog”作为目标表,然后选择“Foreign Keys”选项卡,您应该在那里选择“association_id”字段。一旦你发现只需检查“外键选项”部分中显示的“打开删除”的弹出值,它就会显示“CASCADE”(类似于上面显示的屏幕截图 - 如果它没有显示'CASCADE',只需选择它)。

答案 1 :(得分:2)

在Dog和association之间添加关系:在Dog属性上为association_id列添加一个新的外键,引用association.id。选择删除CASCADE

您也可以在查询窗口中执行这些步骤(就个人而言,只有在需要打印数据库结构时才使用图形工具)。

ALTER TABLE Dog ADD CONSTRAINT `FK_byAssociationIdDog` 
 FOREIGN KEY(association_id)  
REFERENCES Association(id) ON UPDATE CASCADE ON DELETE CASCADE;