首页 > 解决方案 > 在级联递归表上删除 - SQL Server

问题描述

上面的链接副本没有解决问题。他们只谈论他们必须解决的可能性。

我需要在同一张桌子上删除级联项目,所以我有:

CREATE TABLE Person
(
    id int primary key identity,
    name varchar(30) not null,
    idFather int

    CONSTRAINT fkIdFather FOREIGN KEY (idFather) REFERENCES Person(id) ON DELETE CASCADE
)

我有这样的结果select

在此处输入图像描述

所以,当我删除 Jon: Robert、Alex 和 Jeff 时,也需要删除。

当我删除爱丽丝时:乔恩、罗伯特、亚历克斯和杰夫也需要被删除。

当我这样做时,我得到了这个错误:

在表“Person”上引入 FOREIGN KEY 约束“fkIdFather”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

无法创建约束。请参阅以前的错误。

我该如何解决这个问题?

标签: sql-server

解决方案


推荐阅读