首页 文章

删除级联正在删除整个子表

提问于
浏览
0

我有两个表:Parent,它有一个主键(parentID)和一些varchar(50)和Child类型的其他字段,如下所示:

childID, primary key
parentID, foreign key references Parent (parentID)
otherID, foreign key  to another table
  • 如果我从Child删除一行,没问题 .

  • 如果我从Parent中删除一行,我在Child上得到一个外键约束错误 - 好,这是正确的 .

现在,我修改了parentID键的关系,并将delete设置为cascade而不是No Action(我正在使用2008服务器工作室,右键单击列,选择Modify,然后右键单击表设计并选择Relationships . 然后选择父/子表的关系并打开表设计器下的插入/更新规范部分)

如果我从Child删除一行,再次没问题 . 如果我从Parent中删除一行,则删除子表的所有行,即使其中大多数行都指向其他父ID .

我继承了这个DB及其所有表 . 我缺少一些属性设置吗?根据我的阅读,级联删除应该只删除指向我从Parent中删除的单个parentID的子行 .

谢谢 .

2 回答

  • 2

    是的,删除应该只删除与删除的“父”相关的行 .

    查看级联删除设置,还查找可能写错的触发器 .

  • 1

    尝试设置SetNull而不是cascade,这会导致将子表列(其中父表的键退出)设置为NULL .

相关问题