由于外键限制,无法删除记录

时间:2012-02-19 10:25:28

标签: sql sql-server database

在我的数据库中,我有一个名为“departments”的表。它包含有关各个部门的信息。此表的“name”列声明为primary key

现在我的一个部门被删除了。所以我希望从我的数据库中删除该部门记录及其相关信息。但是,foreign key限制阻止我这样做。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

如果在各种表中有相关​​行的树,则必须从下往上进行删除。在这种情况下,任何学生,员工和回形针清单都需要在删除部门之前删除(或重新分配给其他部门)。

级联删除“解决”此问题。它们导致相关信息自毁。我发现自己明确地处理这个问题通常更合适,而不是武装可能会回来并在某个地方咬我的武器。

在许多情况下,另一个考虑因素是保持历史。如果您拥有每个部门购买的材料的审计跟踪,则无法删除该部门而不会丢失历史记录。你可以将这种关系排除在外,但这会使历史悬挂在一个无效的,或者可能是回收的部门ID上。典型的解决方案是添加一个标志以指示部门或其他实体是Inactive。同样,非活动用户帐户不允许登录,但与该用户关联的任何历史记录都将保持不变。

相关问题