SRA*_*SRA 2 .net sql sql-server
表结构
ID DESC PARENT_ID**
35151 Parent 35154
35152 System 35151
35153 Same as System 35151
35154 ParentsParent 35157
35156 Product 35157
35157 Login Group 35159
Run Code Online (Sandbox Code Playgroud)
哪里
Id是主键,parent_id是同一表中引用的外键
如何递归删除记录,从最后一个子项开始直到父项.如果没有子记录,则应删除父记录.如果发生奇怪的事情我需要使用回滚事务.
您可以使用递归CTE来删除列表.
https://data.stackexchange.com/stackoverflow/query/9287/so3466713
-- SO3466713
CREATE TABLE #t (
ID int NOT NULL
,[DESC] varchar(50) NOT NULL
,PARENT_ID int NULL
)
INSERT INTO #t VALUES
(35151, 'Parent', 35154)
,(35152, 'System', 35151)
,(35153, 'Same as System', 35151)
,(35154, 'ParentsParent', 35157)
,(35156, 'Product', 35157)
,(35157, 'Login Group', 35159)
;WITH tree AS (
SELECT *
FROM #t
WHERE [DESC] = 'Parent'
UNION ALL
SELECT c.*
FROM #t AS c
INNER JOIN tree AS p
ON c.PARENT_ID = p.ID
)
-- SELECT *
-- FROM tree
DELETE FROM #t WHERE ID IN (SELECT ID FROM tree)
SELECT * FROM #t?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2665 次 |
| 最近记录: |