我有一个包含以下列的简单表:id、name 和 parentID
我在同一张表上创建了id和parentID之间的关系图(在同一张表上),就像简单的树一样,但是当我尝试用户级联删除时,它对我来说被禁用了
我知道如果我要删除父级它将是递归删除它会删除他的孩子
我有什么选项可以在没有触发器的情况下进行级联删除吗?
我有一个包含以下列的简单表:id、name 和 parentID
我在同一张表上创建了id和parentID之间的关系图(在同一张表上),就像简单的树一样,但是当我尝试用户级联删除时,它对我来说被禁用了
我知道如果我要删除父级它将是递归删除它会删除他的孩子
我有什么选项可以在没有触发器的情况下进行级联删除吗?
不,SQL Server 不允许递归和/或多个级联路径。
可以使用存储过程逐位删除,也可以使用触发器。对不起。
最好对多个操作使用后触发器。
一种可能适合您的选择:
问题是当你删除一个孩子时,你不会从它的父级中删除链接,当你删除一个父级时,你不会删除从它的孩子到任何孙子的任何链接。
但是,您可以通过始终对 ParentID 和 ChildID 使用 INNER JOIN 在您的应用程序中解决此问题,因此将忽略 Parent/Child 表中的任何剩余绒毛。
然后,您可以在任何时间基础上运行存储过程,以清除不存在父或子的任何父/子关系。每次运行时都冲洗并重复,因为简单的 DELETE FROM parentchild WHERE NE(parent) OR NE(child) 不会递归。