如果从子表中删除行,则“在删除级联上”

时间:2013-09-16 17:54:20

标签: mysql sql foreign-keys sqlcommand cascading-deletes

我很难理解“删除级联” 如果我有以下示例:

创建表X(id int主键,名称为char(10));

创建表Y(bid int主键,在删除级联上辅助引用A(id));

X包含一行(111,'Mike')

Y包含两行(1000,111),(2000,111)**

如果在表Y中删除了行(2000,111)会发生什么?

该行是否会被删除,或者甚至允许我删除任何内容,因为引用了父表?

由于

3 个答案:

答案 0 :(得分:3)

它将被删除,不会发生任何其他事情。级联删除仅从引用的表到引用表。 因此,表X上的删除会将删除级联到表y,而表y上的删除对表x没有影响。

答案 1 :(得分:2)

不会发生任何事情,只有从表X中删除一行时,表Y中引用它的行才会被删除。

答案 2 :(得分:2)

ON删除级联选项如果对子表执行任何删除,则不会生效。此选项用于指定在删除父表中的行时,数据库服务器还会删除子表中与该行(外键)关联的所有行。级联删除功能的主要优点是它允许您减少执行删除操作所需的SQL语句数量。