我有一个包含以下列的简单表: id,name和parentID
我在同一个表上创建了 id 和 parentID 之间的关系图(在同一个表上),就像简单的树一样,但当我尝试用户级联删除它时我被禁用了
我知道如果我将删除父母将删除他的孩子
将是递归删除我有没有触发器的可用级联删除的任何选项吗?
答案 0 :(得分:3)
不,SQL Server不允许递归和/或多个级联路径。
您可以使用存储过程逐位删除,或使用触发器。遗憾。
答案 1 :(得分:1)
最好使用后触发器进行多项操作。
答案 2 :(得分:1)
可能为您工作的一个选项:
问题在于,当您删除子项时,您不会从其父项中删除链接,当您删除父项时,您不会删除中的任何链接< / em>将孩子送给任何孙子女。
但是,您可以通过对ParentID和ChildID使用INNER JOIN来解决此问题,因此父/子表中的任何剩余绒毛都将被忽略。
然后,您可以在任何定时的基础上运行存储过程,以清除父项或子项不存在的父/子关系。每次运行时都要冲洗并重复,因为一个简单的DELETE FROM父代WHERE NE(父)或NE(子)将不会递归。