给定一个包含表 Foo 的数据库。Foo 与其他几个表有子关系,而这些表又与更多的表有子关系。简而言之,Foo 具有第 n 级的子关系。
现在假设我们要从 Foo 中删除一条记录。在我们这样做之前,我们必须确定删除所有子(孙子等)记录的最佳策略,以避免因外键约束而绊倒。
有没有一种工具可以提供我的数据库模式,告诉它我想删除一条 Foo 记录,它会为我计算最佳删除策略?所以我可以采用这个策略并在我的业务逻辑中实现它。
详细说明:正如评论中提到的 CASCADE DELETE 将非常适合上述情况。但是,我忽略了说 Foo 通过多条路径连接到它的一些后代。这使得级联不是一个选项,至少对于 MS SQL Server。我们使用的 ORM 是 LINQ to SQL,它也不支持级联场景。所以我们遇到了这样一种情况,即从 Foo 及其所有后代中删除一条记录的顺序不是很明显,以及哪种顺序是最佳的。这需要一些令人费解的地方,而 Foo 当然不是唯一需要这样做的表:-) 因此,我的问题是是否有工具可以为我分析这个。