1
은이 같은 폴더 구조를 가지고 :엔티티 프레임 워크 자체 참조 엔티티 삭제
Folder1
Folder1.1
Folder1.2
Folder2
Folder2.1
Folder2.1.1
and so on..
질문은 삭제 계단식 (즉 때 모든 아이들이도 삭제됩니다 Folder2 폴더 제거합니다.)하는 방법이다. MSSQL이 허용하지 않으므로 ON DELETE 동작을 설정할 수 없습니다. 수제 좀 줄래?
업데이트 :이 저장된 proc 파일을 작성했습니다. 그냥 그대로 두거나 수정해야합니까?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE sp_DeleteFoldersRecursive
@parent_folder_id int
AS
BEGIN
SET NOCOUNT ON;
IF @parent_folder_id = 0 RETURN;
CREATE TABLE #temp(fid INT);
DECLARE @Count INT;
INSERT INTO #temp(fid)
SELECT FolderId FROM Folders WHERE FolderId = @parent_folder_id;
SET @Count = @@ROWCOUNT;
WHILE @Count > 0
BEGIN
INSERT INTO #temp(fid)
SELECT FolderId FROM Folders WHERE EXISTS
(SELECT FolderId FROM #temp
WHERE Folders.ParentId = #temp.fid)
AND NOT EXISTS
(SELECT FolderId FROM #temp
WHERE Folders.FolderId = #temp.fid);
SET @Count = @@ROWCOUNT;
END
DELETE Folders FROM Folders INNER JOIN #temp ON Folders.FolderId = #temp.fid;
DROP TABLE #temp;
END
GO