【发布时间】:2010-11-12 17:52:05
【问题描述】:
我有两张桌子: Parent,它有一个主键(parentID)和一些其他类型为 varchar(50) 和 Child 的字段,如下所示:
childID, primary key
parentID, foreign key references Parent (parentID)
otherID, foreign key to another table
- 如果我从 Child 中删除一行,没问题。
- 如果我从 Parent 中删除一行,我会在 Child 上收到外键约束错误 - 很好,没错。
现在,我修改 parentID 键的关系并将删除设置为级联而不是无操作 (我使用的是 2008 服务器工作室,右键单击列,选择修改,然后右键单击表设计并选择关系。然后我选择父/子表的关系并打开下面的插入/更新规范部分表设计器)
如果我从 Child 中删除一行,同样没有问题。 如果我从 Parent 中删除一行,子表的所有行都会被删除,即使它们中的大多数都指向其他 parentID。
我继承了这个数据库及其所有表。我缺少一些属性设置吗?根据我的阅读,级联删除应该只删除指向我从 Parent 中删除的单个 parentID 的子行。
谢谢。
本
【问题讨论】:
-
是的,级联删除只会删除与父级关联的子行。我最好的猜测是您没有正确定义级联删除。再检查一遍。
标签: sql-server parent-child cascade